1.ArrayList 集合底层代码是数组实现的,不断扩容。查询快,增删慢,所以一般用于查询。
2.LinkedList 集合底层代码是链表,增删快,查询慢。一般用于增删数据。
3.TreeSet可以排序是因为底层是红黑树。(自然排序和比较器排序)
4.如果 HashSet(哈希表结构) 集合 存储,自定义对象的过程当中,必须重写 hashCode 和 equals 方法。因为不重写比较的就是地址值。属性值相同但是地址值是不同的,还不是一个元素,无法去重。
注:
- 没有重写 hashCode() 方法,底层是根据地址值计算, hash值不相同。
- 如果重写 hashCode() 方法,底层是根据属性值计算, hash值相同。
- JDK7 底层是: 数组 + 链表
- JDK8 底层是: 数组 + 链表 + 红黑树 //当链表的长度>8的时候,自动转换成为红黑树。(提高查询的效率)
a、Map集合,主要是用来解决 一一对应问题。 他是一个键值对。一个键,对应一个值。 //理解: 夫妻对。(一夫一妻)
b、键,不可以重复。 值,可以重复 //如果键是自定义类的对象,那么自定义的类,需要重写 hashCode 和 equals
c、//Map集合的遍历方式: 三种
//[1] keySet 召集所有的丈夫,找到对应的媳妇
//[2] entrySet 通过结婚证,得到丈夫和媳妇
//[3] Lambda
6、HashMap底层是哈希表结构的
7、TreeMap底层红黑树结构,可以排序