Map:
interface Map<K,V> K:键的类型;V:值的类型
特点:双列集合,一个键对应一个值,且键不可以重复,值可以。
方法:
方法名 | 说明 |
---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中键值对的个数 |
V get(Object key) | 根据键获取值 |
Set<K> keySet() | 获取所有键的集合 |
Collection<V> values() | 获取所有值的集合 |
Set<Map.Entry<K,V>> entrySet() | 获取所有键值对对象的集合 |
Map的遍历:
方法一:map的keySet()方法
Map<String,Integer> map = new HashMap<>();
map.put("小白",18);
map.put("小黑",19);
map.put("小绿",20);
Set<String> strings = map.keySet();
for (String key : strings) {
Integer value = map.get(key);
System.out.println(key + "," + value);
}
结果:
方法二:map的entrySet()方法
Map<String,Integer> map = new HashMap<>();
map.put("小白",18);
map.put("小黑",19);
map.put("小绿",20);
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> se : entrySet) {
String key = se.getKey();
Integer value = se.getValue();
System.out.println(key + "," + value);
}
结果同上。
HashMap集合
特点:
-
HashMap底层是哈希表结构的
-
依赖hashCode方法和equals方法保证键的唯一
-
如果键要存储的是自定义对象,需要重写hashCode和equals方法
TreeMap集合
特点:
-
TreeMap底层是红黑树结构
-
依赖自然排序或者比较器排序,对键进行排序
-
如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则