队列源码


队列如果用数组的话,入队就是在队尾插入一个元素没有问题,但是如果要出队的话

容易造成假溢出(明明前面还有空位但是不能用到)

2.如果用出队一个元素后,将所有后面的元素往前移的话,出队的复杂度高。

用循环队列(顺序存储)可以解决家溢出。

最好还是用链式结构(不同于栈,栈用顺序存储比较好)
public interface Queue<E> extends Collection<E>
Java里面是一个接口
入队:boolean offer(E e);
出队: E poll();


Stack源码(一)


继承于Vector

Vector跟ArrayList有点像,也是用数组保存元素。
newElementArray方法类似于toArray
也有add方法,意味着Stack有可能继承这个方法,还有remove,contains等等方法。同时还有迭代器内部类。

hashCode是在Object类中的,其他类都是继承Object类的。
Vector中的capacityIncrement是扩容因子,在原先的栈已经满的时候,扩容一定数量的空间。

private void growByOne() {
        int adding = 0;
        if (capacityIncrement <= 0) {
            if ((adding = elementData.length) == 0) {
                adding = 1;
            }
        } else {
            adding = capacityIncrement;
        }

        E[] newData = newElementArray(elementData.length + adding);
        System.arraycopy(elementData, 0, newData, 0, elementCount);
        elementData = newData;
    }


202. Happy Number


分析题目

看看这题给的例子,比如19,那么19的个位数和十位数1和9分别平方,然后相加得到的数,然后再将新得到的数,进行上面的步骤(也就是82的个位数和十位数分别平方相加,得到新的数,然后继续...)直到得到结果为1,则为Happy Number。否则在循环过程中得到之前已经得到过的结果(即hashset中有重复值了),那么则不可能得到1,那么一开始给的数就不是Happy Number。

为什么要用HashSet?

HashSet

  HashSet实现了Set接口,它不允许集合中出现重复元素。public boolean add(Object obj)方法用在Set添加元素时,如果元素值重复时返回 "false",如果添加成功则返回"true"

HashMap:

  HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许出现重复的键(Key)。


笔记:Java——反射机制


反射虽然在我们工作中用到的地方不是很多, 但是我们所有的框架基本都会用到反射技术去实现相应的功能, 学好反射技术有利于我们以后阅读框架源码, 更好的理解别人的一个思想和逻辑。 从而使我们更加得心应手的去做开发的工作。

任何一个类都是Class的实例对象,这个实例对象有三种表示方法

Class类

Java中,一切皆对象,可以认为类也是对象,类是java.lang.Class类的实例对象(任何一个类都是Class的实例对象,这个实例对象有三种表示方法)。如Student,Person都是Class类的对象。

一.什么是反射:

JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。 大家能发现这里边比较核心的一句话就是, 对于任意一个类, 都能获取到这个类的所有属性和方法, 没错, 你没有看错, 是所有的属性和方法。 不管这个属性或者方法是 private 还是 public 以及其他修饰符修饰的, 都能获取到, 这就是反射的强大之处。


shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide