集合Collection
1. List: 有序, 带索引, 可以重复元素
a. ArrayList: 数组,内存中连续,查询快,增删慢。
b. LinkedList: 链表(值+下一个元素的内存地址),增删快,查询慢
2. Set: 无序, 不带索引,不可重复
a.HashSet, 内部实现了HashMap, 允许null元素,底层由hashtable实现, 存储取出都比较快, jdk1.7中hashtable由数组加链表组成,jdk1.7之后hashtable由数组+红黑树组成。HashSet判断重复,先判断hash值是否相同,再用要加入的值判断是否equals(已有的值),若是都相等,则判定重复。(HashCode常规协定:若两个对象equals返回true,则他们的hashcode一定相等,而两个对象equals不相等,不要求一定生成不一样的hashcode,但为不相等的对象生成不同的hashcode可以提高程序性能,这是程序员应该意识到的。)
b.LinkedHashSet 继承自HashSet,具有顺序,存储和取出结果是一样的。