Map集合取数据 方法汇总

来源:互联网 发布:2k16捏脸数据 编辑:程序博客网 时间:2024/05/17 06:26

常用的方法可以先拿到当前map所有的key 根据key迭代出所有的value

Map.Entry是Map的一个工具类,提供了从map中读取一行数据的读取,一次可以迭代出map集合中的键值对,或者说一次迭代一行数据而不是一个key

Map集合取数据 方法汇总// 创建集合Map<Integer, String> map = new HashMap<Integer, String>();map.put(1, "可口可乐");map.put(2, "百事可乐");map.put(3, "雪碧");
// 方法一: for each  +  map.keySet(); Set<Integer> set = map.keySet();for (Integer key : set) {System.out.println("key:" + key + ", value:" + map.get(key));}
// 方法二:while循环(Iterator  +  map.keySet();)Set<Integer> set = map.keySet();Iterator<Integer> it = set.iterator();while(it.hasNext()){Integer key = it.next();System.out.println("key:" + key + ", value:" + map.get(key));}
// 方法三:while循环(Iterator  +  Map.Entry<Key, Value>)Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();while (it.hasNext()) {Map.Entry<Integer, String> entry = it.next();System.out.println("key:"+entry.getKey() + ", value:"+entry.getValue());}
// 方法四:for循环(Iterator  +  Map.Entry<Key, Value>)for(Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); it.hasNext();){Map.Entry<Integer, String> entry = it.next();System.out.println("key:" + entry.getKey() + ", value:" +entry.getValue());}
// 方法五:for each  +  Map.Entry<Key, Value>for(Map.Entry<Integer, String> entry : map.entrySet()){System.out.println("key:" + entry.getKey() + ", value:" +entry.getValue());}


常用的方法:

HashMap类

Set<K>           keySet()

                       返回当前map所有的key的Set集合。

 Set<Map.Entry<K,V>>      entrySet() 
                      返回当前map所有的key和value的Set集合。

Set类

Iterator<E>     iterator()

            返回在此 set 中的元素上进行迭代的迭代器。

Iterator类

boolean         hasNext()  
                         当前指针是否指向一个元素(地址)
E                      next() 
                        返回当前指针的元素,返回类型是Iterator里定义的泛型,并且把指针往下移一行

Map.Entry类

map集合的工具类,可以一次迭代出集合里所有的键和值

Key           getKey() 
                   返回当前指针所指向的那行的key
Value        getValue() 
                   返回当前指针所指向的那行的Value

Value         setValue(V value) 
                    传参Value替换当前指针所指向的那行的Value

Map.Entry的注意事项

 /* Api 的解释:
* 返回此映射中所包含的键的 Set 视图。
* 该 set 受映射的支持,所以对映射的更改将反映在该 set 中,反之亦然。
* 如果在对 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。
* 该 set 支持元素的移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从该映射中移除相应的映射关系。
* 它不支持 add 或 addAll 操作。 

* 或者说 map的EntrySet继承自AbstractSet没有重写父类AbstractCollection中的add和addAll方法,
* 所以在EntrySet中加入数据调用add是调用的AbstractCollection的add,
* 那里面就写着一句话throw new UnsupportedOperationException(); 
*/