- Map集合使用的是Key - Value的形式存储元素,也就是键值对的形式。
- Map集合内部的实现分别是HashMap和TreeMap,也就是哈希表和二叉树这两种数据结构。
- List集合和Set集合都是继承自Collection类,而Map集合就是自己的父类。前者可以直接通过Iterator迭代器进行迭代,而后者就必须要转换成Set集合再使用Iterator迭代器进行内部元素的迭代
Map集合有效的遍历出内部的元素,就必须转换成Set集合再使用Iterator迭代器进行迭代。
方式一
使用Map接口自带的内部接口 Entry<K , V> 进行过度方式的遍历 public static interface Map.Entry<K,?V> Map集合内部元素的映射条目(键值对)。 Map.entrySet方法返回地图的集合视图,其元素属于此类。
private static void mapItetator(){
Map<String,Integer> mapCollect = new HashMap<>();
mapCollect.put("zhang",11);
mapCollect.put("san",1212);
Iterator<Map.Entry<String,Integer>> iterator = mapCollect.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String,Integer> item = iterator.next();
System.out.println(item.getKey() + "--->" + item.getValue());
}
List<String> result = new ArrayList<>();
result.toArray();
}
结果
san—>1212 zhang—>11
方式二
Map集合.keySet() 将Key映射成Set集合,Map集合.values() 将Value映射成Collection集合
private static void mapItetator(){
Map<String,Integer> mapCollect = new HashMap<>();
mapCollect.put("zhang",11);
mapCollect.put("san",1212);
for(String key : mapCollect.keySet()) System.out.println(key);
for(Integer value : mapCollect.values()) System.out.println(value);
}
结果
san zhang 1212 11
方式三
通过指定的Key,再利用Map集合的get () 方法得到指定的Value
private static void mapItetator(){
Map<String,Integer> mapCollect = new HashMap<>();
mapCollect.put("zhang",11);
mapCollect.put("san",1212);
for(String key : mapCollect.keySet()){
System.out.println(key + "--->" + mapCollect.get(key));
}
结果
san—>1212 zhang—>11
总结
再上述三种方式中,采用的Map实现类是Hash Map,哈希表也称为散列表,存储数据是由一个Hash函数进行定位的,所以元素输出的顺序就会导致和存储时的位置不一样,如果想要一样,就可以使用LinkedHashMap实现类去实现Map接口。 遍历Map集合最常用的方式就是方式一,将Map集合转换成Set集合,然后通过Iterator进行遍历输出。
今天是大年初一,大家新年快乐,2021年已经成为了过去,这一年的努力在我们的眼里都看得十分清晰,是的,很累。但是我们无法避免社会的残酷,我们需要拼命地去追赶哪些被称为“天才”的奋斗者。2022年又是一个新的开始,所以请让我们继续奋斗、继续加油。
|