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(); |