java——双列集合
-
双列集合一次需要存一对数据,分别为键和值
-
键不能重复
-
键和值是一一对应的,每一个键只能找到自己对应的值
-
键+值这个整体我们称之为“键值对”或“键值对对象”Entry对象
方法名 | 说明 |
---|---|
V put(k key,v value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containskey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int saze() | 集合长度,也就是键值对个数 |
Map遍历
-
HashMap底层是哈希表结构的
-
依赖hashCode方法和equals方法保证键的唯一
-
如果键储存的是自定义对象,需要重写hashCode和equals方法
-
如果值存储的时自定义对象,不需要重写hashCode和equals方法
LinkedHashMap
有键决定的:有序,不重复,无索引
这里的有序是指保证存储和取出的元素顺序一致
原理:底层数据结构依然是哈希表,只是每个键值对又额外的多了一个双链表的机制记录存储的顺序
TreeMap
TreeMap跟TreeSet底层原理一样,都是红黑树结构的
由键决定特性:不重复,无索引,可排序
可排序:对键进行排序
TreeMap默认按照间的从小到大进行排序,也可以自己规定的排序规则
代码书写两种排序规则
-
实现Comparable接口,指定比较原则
-
创建集合时传递Comparator比较器对象,指定比较规则
可变参数
-
可变参数本质就是一个数组
-
作用:在形参中接收多个数据
-
格式:数据类型 ....参数名称 例int.....a
-
注意:1.形参列表中可变参数只能有一个 2.可变参数必须放在形参列表的最后面
Collections
-java.util.Collections:是集合工具类
作用:Collections不是集合,而是集合工具类
方法 | 说明 |
---|---|
public static< T >boolean addAll(Collection< T > c, T.....elements) | 批量添加元素 |
public static voidshuffle(List< ? > list) | 打乱LIst集合元素顺序 |
public static < T > void sort(List< T >list) | 排序 |
public static < T > void sort(List, Comparator< T > c ) | 根据指定的规则排序 |
public static < T > int binarySearch(List< T >,T key) | 二分法查元素 |
public static < T > void copy(List< T >dest,LIst< T > src) | 拷贝集合中的元素 |
public static < T > int fill(List< T >list,T obj) | 使用指定的元素填充集合 |
public static < T > void max/min(Collection< T > coll) | 根据自然排序获取最大/小值 |
public static < T > void swap(List< ? > list,int i,int j) | 交换集合中指定位置元素 |
集合进阶
不可变集合:不可以被改变的集合
特点:定义后不可以修改或添加,删除
如何创建不可变集合
LIst Set和Map集合中,都存在of方法可以创建不可变集合
-
List:直接用
-
Set:元素不能重复
-