JAVA Map
Map
Map接口的概述
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同。
A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储
B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
C:Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值
Map的功能
A:映射功能: V put(K key, V value) :以键=值的方式存入Map集合
B:获取功能:
V get(Object key):根据键获取值 int size():返回Map中键值对的个数
C:判断功能: boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对 boolean containsValue(Object value):判断Map集合中是否包含值为value键值对 boolean isEmpty():判断Map集合中是否没有任何键值对
D:删除功能: void clear():清空Map集合中所有的键值对 V remove(Object key):根据键值删除Map中键值对
E:遍历功能: Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回 Set<K> keySet() :将Map中所有的键装到Set集合中返回 Collection<V> values():返回集合中所有的value的值的集合
HashMap两种遍历的方法
public static void main(String[] args) { //创建Map对象 HashMap<String,String> hm = new HashMap<>(); //添加映射关系 hm.put("001","wndmd"); hm.put("002","xswl"); hm.put("003","awsl"); //获取对象 Set<Map.Entry<String, String>> entries = hm.entrySet(); for (Map.Entry<String,String> s:entries ) { String key = s.getKey(); String value = s.getValue(); System.out.println(key + "---" + value); } //method(hm); } private static void method(HashMap<String, String> hm) { Set<String> keySet = hm.keySet(); for (String keyset:keySet ) { String s = hm.get(keyset); System.out.println(keyset + "----" + s); } }
HashMap底层是哈希表数据结构,线程是不同步的,可以存入null键,但只有一个Null键。要保证键的唯一性,需要覆盖hashCode方法,和equals方法。线程非同步的
HashTable:底层是哈希表,不可以存入Null键Null值,线程是同步的
TreeMap:二叉树,线程不同步。可以用于给Map集中的key键进行排序。