Map<K,V> 双列集合的顶层接口
K: key 键 键是唯一的
V: value 值 值是可以重复的
常用子类
TreeMap
键 排序 唯一
HashMap
键 无序 唯一
LinkedHashMap
键 有序 唯一
TreeMap集合 :如何排序? 怎么保证键的唯一?
1.元素实现 自然排序接口 Comparable 重写compareTo方法 定义比较规则 如果返回0 则代表元素相同
2.创建集合时,在构造方法中传入比较器对象 Comparetor 重写compare方法 定义比较规则 如果返回0 代表元素相同
HashMap和linkedHashMap如何保证键的唯一? 重写hashCode和equals方法
先比较hashCode
不同 直接添加
相同 比较equals
不同 添加
相同 覆盖值
两种遍历方式
1.使用键找值的方式
Set<K> keySet() 获取所有键的Set集合
1.创建Map集合 添加元素
2.map集合调用keySet方法 获取所有key的Set集合
3.遍历Set集合 依次获取到每个元素(key)
4.调用Map集合的get(object key) 根据键找到对应的值
2.使用键值对关系的方式
Set<Map.Entry<K,V>> entrySet() 获取所有键值对关系对象的Set集合
1.创建Map集合 添加元素
2.调用entrySet方法 获取到存储所有结婚证(键值对关系)对象的Set集合
3.遍历Set集合 依次获取到每个结婚证(Entry )
4.通过结婚证(Entry) 的 getKey 获取到键 getValue 获取到值
可变参数
使用前提 :参数类型确定,个数不确定
可以传入当前类型的任意个数据
格式
参数类型...参数名
例子
public static int sum(int...a){};
注意事项
1.可变参数本质上就是数组 也可以直接传数组
2.一个方法只能有一个可变参数
3.如果方法有多个参数 可变参数要放到最后面
4.最牛的可变参数 Object...obj 任意类型 任意个数