Map接口
- 特点:存储一对数据(Key-Value),无序、无下标,键不可重复。
1. 常用方法:
V put(K key,V value)
将对象存入到集合中,关联键值。key重复则覆盖原值。Object get(Object key)
根据键获取相应的值。Set<K> keySet()
//返回所有的key。Collection<V> values()
返回包含所有值的Collection集合。Set<Map.Entry<K,V>> entrySet()
键值匹配的set集合。效率高于ketSet()获取键值对。Collection<V> values()
返回此映射中包含的值的Collection视图。remove(Object key)
根据key删除映射关系。int size()
返回映射关系数。putAll(Map <K key, V value>)
将指定映射中的所有映射关系复制到此映射关系的集合中。isEmpty()
查看Map中是否为空。boolean contains(Object o)
查看是否包含指定元素。
2. 使用
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
//1.添加元素
map.put("tang", 21);
map.put("he", 22);
map.put("fan", 23);
System.out.println(map.toString());
//2.删除元素
map.remove("he");
System.out.println(map.toString());
//3.遍历
//3.1 使用keySet();
for (String key : map.keySet()) {
System.out.println(key + " " + map.get(key));
}
//3.2 使用entrySet();效率较高
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
3. 实现类
HashMap【重点】
JDK1.2版本,线程不安全,运行效率快;允许用null作为key或是value。
初始容量16,加载因子0.75。
- 存储结构:哈希表 = 数组 + 链表 [+ 红黑树(JDK1.8+)]
Hashtable
- JDK1.0版本,线程安全,运行效率慢;不允许null作为key或是value。
- 初始容量11,加载因子0.75。
- 这个集合在开发过程中已经不用了,稍微了解即可。
Properties
- Hashtable的子类,要求key和value都是String。通常用于配置文件的读取。
- 它继承了Hashtable的方法,与流关系密切。
TreeMap
- 实现了SortedMap接口(是Map的子接口),可以对key自动排序。
- 存储结构:红黑树。