目录
1、双列集合
特点:
-
双列集合一次需要存一对数据,分别为键和值
-
键不能重复,值可以重复
-
键和值是一一对应的,每一个键只能对应一个值
-
“键 + 值”整体被称为“键值对对象”,在Java中叫做“Entry对象”
2、Map
Map中常见的API:
Map的遍历方式:
利用键找值的方式:
Set<String> keys = map.keySet();
for(String key : keys) {
System.out.println(key);
String value = map.get(key);
System.out.println(key + " = " + value);
}
利用键值对遍历:
Set<Map.Entry<String,String>> entries = map.entrySet();
for(Map.Entry<String,String> entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
Syetem.out.println(key + " = " + value);
}
2.1、HashMap
-
HashMap底层是哈希表的结构
-
键无序,不重复,无索引
-
依赖HashCode方法和equals方法保证键的唯一
-
如果键存储的是自定义的对象,需要重写hashCode和equals方法。如果值存储自定义对象,不需要重写hashCode和equals方法
2.2、LinkedHashMap
-
由键决定:有序,不重复,无索引
-
这里的有序指的是保证存储和取出的元素顺序一致
-
原理:底层数据结构是哈希表,只是多了双链表的机制记录存储的顺序
2.3、TreeMap
-
TreeMap跟TreeSet底层原理一样,都是红黑树结构的
-
由键决定特性:不重复,无索引,可排序
-
可排序:对键进行排序
-
注意:默认按照键的从小到大进行排序,也可以是自己规定的排序顺序
3、可变参数
可变参数本质上是一个可变数组,作用是在形参中接收多个数据
注意:
-
形参列表中可变参数只能有一个
-
可变参数必须放在形参列表的最后
4、Collections
-
java.util.Collections:是集合工具类
-
作用:Collections不是集合,而是集合的工具类
Collections的API:
5、不可变集合
应用场景:
-
如果某个数据不能被修改,把它防御性的拷贝到不可变集合中是一个很好的实践
-
或者当集合对象被不可信的库调用时,不可变形式是安全的
创建:
特点:
定义完成后不可修改、添加或删除