一、List相关操作
1、List是有序的。
2、线性表每个元素都存在最多唯一的一个元素,线性表包含顺序表(ArrayList)和链表(LinkedList)。
3、LinkedList双向链表有上一个、下一个元素,1.2是循环的环路操作,从1.7之后变成非循环双向列表。
4、LinkedList从JDK1.2开始存储的每一个元素是Entry对象,在1.7之后则使用Node元素。
5、Stack(栈)是先进后出,继承Vector。
6、Queue(队列)是先进先出。
7、ArrayList提供带初始化容量的有参数构造方法,还有一个接收Collection的有参数构造方法,而LinkedList只提供了一个接收Collection的有参数构造方法
8、LinkedList在添加元素的时候,next指向下一个元素,previous指向前一个元素,本身element元素值指向设置的数据。
二、Set相关操作
1、Set不允许重复元素,元素无序(不是按照添加顺序依次存储数据)
2、HashSet
3、SortedSet(子类TreeSet)和SortedMap(TreesMap)自然排序集合
4、Arrays和Collections类的使用
5、Collections的reverseOrder()反序列操作,sort()操作,shuffle()乱序,min()和max()获取最小值、最大值
三、Map相关操作
1、key唯一存在,不允许重复,value可以重复,HashSet和HashMap不保证顺序存储。
2、Map.entry()所有元素存储集合,map.Entrykey个数和map.EntryValue格式不一定相等
3、map.keySet和map.values
4、hashmap 允许key null,value为null
四、HashSet和HashMap
1、HashSet底层是HashMap是实现的
2、当使用add()把对象添加到HashSet时,实际上是维护HashMap的key集合,而value都是同一个对象,HashSet用不到
3、Hash表根据hash散列函数得到一个值,用来标示存储元素的位置,如果得到结果值已经存放其他元素了,则再进行hash计算一次,排序到其它的地方,两次之后则不会再次hash,负载因子是当元素到达负载容量是,则进行容量扩充。
4、每一个元素在HashCode存储实体是Entry,如果不同的元素生成的hashcode相同,则新生成的Entry则替换换来的位置,旧的Entry被新的next属性链接。(计算机操作系统原则:最近生成的对象,在不久的将来也回去很快被使用)