Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示:
Collection: 存放独立元素的序列。
Map:存放key-value型的元素对。(这对于需要利用key查找value的程序十分的重要!)
list和set的区别
Msp类型集合特点:
- 双列集合一次需要存一对数据,分别为键和值。
- 键不能重复,值可以重复。
- 键和值是一一对应的,每一个键只能找到自己对应的值。
- 键+值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象”。
List
1.ArrayList集合
- 底层原理
- 利用空参创建时,在底层创建一个默认长度位0的数组
- 当添加第一个元素时,底层会创建一个新的长度位10的数组(elementDate)
- 存满时会扩容1.5倍
- 如果一次添加多个元素,1.5倍放不下,则创建数组长度以实际长度为准。
- 内部有个size变量,记录元素个数和下次存入的位置
- 集合特点:
2.LinkedList集合
3.总结
Set
1.HashSet
2.LinkedHashSet
3.TreeSet
public class Test {
public static void main(String[] args) {
TreeSet ts=new TreeSet();
ts.add("agg");
ts.add("abcd");
ts.add("ffas");
Iterator it=ts.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
//输出 : 按照字典序排序的方式进行排序
//abcd
//agg
//ffas
List与set的区别
HashSet、LinkedHashSet、TreeSet的使用场景
- HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作
- LinkedHashSet:LinkedHashSet的查询稍慢一些,但是他可以维持元素的添加顺序。所以只有要求当插入顺序和取出顺序一致的时候 才使用LinkedHashSet。
- TreeSet:只有在需要对元素进行排序时使用
Map
1.HashMap
- 底层原理
- 特点
重点:当key值重复时,旧的会被覆盖。