JAVA之集合---Map
JAVA之集合—-Map
Map是一个双列集合,其中保存的是键值对(Key-Value),键要求保持唯一性,值可以重复。

Map方法
创建与删除
1 | Map<String, Integer> Ages = new HashMap<String, Integer>(); |
Value put(K key, V value):将键和值建立映射关系,如果键是第一次存储,就直接存储元素,返回null; 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
void remove(K key):删除指定键的映射
查询
Value get(K key):返回键映射的值,如果该键没有映射值,则返回null
Set<Map.Entry<K,V>> entrySet():返回一个键值对的Set集合
Set keySet():获取集合中所有键的集合
Collection values():获取集合中所有值的集合
int size():返回集合中的键值对的对数
1 | public static void main(String[] args) { |
判断
boolean containsKey(Object key):是否存在特定的key
boolean containsValue(Object value):是否存在特定的value
boolean isEmpty():判断集合是否为空
default V getOrDefault(Object key, V defaultValue):如果哈希表中有这个Key则获取这个值,如果没有则初始化Key的值为defaultValue
1 |
|
遍历
使用
values()方法遍历value:1
2
3
4
5
6
7
8
9Map<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
for (String value : map.values()) {
System.out.println(value);
}使用
keySet()方法遍历key:1
2
3
4
5
6
7
8
9Map<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
for (Integer key : map.keySet()) {
System.out.println(key);
}使用
ForEach方法遍历key-value:1
2
3
4
5
6
7
8
9Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2);
// 使用forEach方法遍历Map中的键值对
map.forEach((key, value) -> {
System.out.println("Key: " + key + ", Value: " + value);
});
HashMap
特点:
- 无序
- 访问速度快
- key不允许重复(只允许存在一个null Key)
LinkedHashMap
- 有序
- 先进先出
- 继承于
HashMap
LinkedHashMap它的特点主要在于linked,带有这个字眼的就表示底层用的是链表来进行的存储。
相对于其他的无序的map实现类,还有像TreeMap这样的排序类,linkedHashMap最大的特点在于有序,但是它的有序主要体现在先进先出FIFO上。没错,LinkedHashMap主要依靠双向链表和hash表来实现的。
TreeMap
对
Key排序TreeMap也是一个很常用的map实现类,因为它实现了SortMap,所以会对Key进行排序,使用了TreeMap存储键值对,再使用iterator进行输出时,会发现其默认采用key由小到大的顺序输出键值对,如果想要按照其他的方式来排序,需要重写也就是override它的compartor接口。
因为只有TreeMap实现了SortedMap类,所以它具有一些独特方法
1 | Map.Entry<K, V> firstEntry(); |

