常用Map集合
大约 2 分钟Java集合
Map集合概述
Map接口是双列集合的顶层接口:
public interface Map<K,V> // K:键的类型 V: 值得类型
- 存储的数据必须包含key和value。
- key和value在Map集合中是一一对应的关系。一个key对应一个value。
- key是不允许重复的。
HashMap
特点
- 底层数据结构是哈希表。
- 存储元素的顺序和遍历获取出来的顺序可能不一样。
- key不会重复。
对象创建
// 创建一个空集合
public HashMap()
// 创建一个指定容量的集合
public HashMap(int initialCapacity)
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
HashMap<String, String> map1 = new HashMap<>(10);
}
常用方法
// 添加元素,如果key不存在就添加,如果key已经存在修改对应的value,并且返回修改前的value
public V put(K key, V value)
// 获取key对应的value,key不存在返回null
public V get(Object key)
// 根据key移除map中对应的键值对,并且把删除的值返回
public V remove(Object key)
// 判断key是否存在
public boolean containsKey(Object key)
// 判断value是否存在
public boolean containsValue(Object value)
// 返回键值对的对数
public int size()
// 清空集合中的所有键值对
public void clear()
// 返回key的Set集合
public Set<K> keySet()
// 返回value的Collection集合
public Collection<V> values()
// 返回map的键值对Map.Entry<K,V>对象的Set集合
public Set<Map.Entry<K,V>> entrySet()
遍历
entrySet遍历
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("1", "hello");
map.put("2", "hashMap");
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " -> " + value);
}
}
keySet遍历
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("1", "hello");
map.put("2", "hashMap");
Set<String> keySet = map.keySet();
for (String key : keySet) {
String value = map.get(key);
System.out.println(key + " -> " + value);
}
}
HashMap集合key去重原理
HashMap在添加元素的时候会判断集合中有key和本次存入的key相同。判断的时候主要通过hashCode和equals方法。hashCode相同,并且equals判断也想通就会认为是同一个key。

所以如果我们要存储到HashMap的key是一个自定义类型。就需要根据清空判断下是否需要重写hashCode和equals方法。