目录
1.0 Map 集合的说明
1.1 Map 集合的常用方法
1.2Map 系列集合的特点
2.0Map 系列集合的遍历方法(三种方法)
2.1 使用 keySet() 方法遍历
2.2 使用 entrySet() 方法遍历
2.3 使用 forEach() 方法遍历(Java 8+)
1.0 Map 集合的说明
Map 是一种集合类型,用于存储键值对(key-value pairs)。每个键都是唯一的,而值可以重复。Map 可以根据键快速查找对应的值。在 Map 中,键和值可以是任意类型的对象。简单来说,Map 类是一个接口,是一种容器,存放着键值对类型的元素。
1.1 Map 集合的常用方法
以代码的方式来介绍 Map 集合的常用方法:
import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;public class MapAPI {public static void main(String[] args) {//由于 Map 是一个接口,不能直接 new 一个 Map 类型的对象,//所以需要用到 Map 的实现类 HashMap 来创建对象。Map map = new HashMap();//一行经典代码//1. put(k,v) :实例方法,添加元素map.put("二哈",250);map.put("金毛",750);map.put("拉布拉多",1250);map.put("中华田园犬",1359);System.out.println(map);//输出结果为:{二哈=250, 金毛=750, 中华田园犬=1359, 拉布拉多=1250}//2. size() :实例方法,获取元素大小int s = map.size();System.out.println(s);//输出结果为:4//3. isEmpty() :实例方法,判断集合是否为空,为空返回true,反之boolean b = map.isEmpty();System.out.println(b);//输出结果为:false//4. get(k) :实例方法,根据键获取对应的值int i = map.get("二哈");System.out.println(i);//输出结果为:250//5. remove(k) :实例方法,根据键删除整个元素map.remove("二哈");System.out.println(map);//输出结果为:{金毛=750, 中华田园犬=1359, 拉布拉多=1250}//6. containsKey(k) :实例方法,判断是否包含某个键boolean bk = map.containsKey("二哈");System.out.println(bk);//输出结果为:false//7. containsValue(k) :实例方法,判断是否包含某个值boolean bv = map.containsValue(750);System.out.println(bv);//输出结果为:true//8. keySet() :实例方法,获取全部键的集合,// 需要用 Set 系列集合来接受。Set stringSet = map.keySet();System.out.println(stringSet);//输出结果为:[金毛, 中华田园犬, 拉布拉多]//9. values() :实例方法,获取全部值//需要用 Collection 系列集合来接受Collection collection = map.values();System.out.println(collection);//输出结果为:[750, 1359, 1250]//10. putAll(Map m) :将 m 中的内容全部倒入到调用该方法的集合中。Map map1 = new HashMap();map1.put("小黑",19999);map1.put("小白",29999);map.putAll(map1);System.out.println(map);//输出结果为:{小白=29999, 金毛=750, 小黑=19999, 中华田园犬=1359, 拉布拉多=1250}//11. clear() :实例方法,删除整个集合中的元素map.clear();System.out.println(map);//输出结果为:{}}}
运行结果如下:
1.2Map 系列集合的特点
无序:就是不会按照添加的元素输出,随机输出,如以下:
不可重复:指定的是 ”键“ 是不允许重复出现,后来添加的重复的元素会覆盖相同 ”键“ 的元素,但是 ”值“ 是不做要求,可以重复出现,如以下:
无索引:因为 Map 系列集合不支持固定的顺序,存在索引自然是没有意义的。
2.0Map 系列集合的遍历方法(三种方法)
2.1 使用 keySet() 方法遍历
通过 Map 的 keySet() 方法获取所有的键,然后使用 for-each 循环遍历键,并通过 get() 方法获取对应的值。
通过具体的代码来实现:
public class MapIteration {public static void main(String[] args) {Map map = new HashMap();map.put("二哈",250);map.put("金毛",1250);map.put("拉布拉多",2250);map.put("中华田园犬",3250);//先取出该集合的全部”键“Set stringSet = map.keySet();//然后用增强 for 方法根据”键“通过 get(k) 来查询”值“for (String k:stringSet) {int v = map.get(k);System.out.println(k+"=="+v);}}}
运行结果:
步骤:先取出该集合的全部”键“,再然后用增强 for 方法根据”键“通过 get(k) 方法来查询”值“。
2.2 使用 entrySet() 方法遍历
通过 Map 的 entrySet() 方法获取所有的键值对的 Entry 对象,然后使用 for-each 循环遍历 Entry 对象,。简单来说就是,将集合中的一个键值对看作一个整体,然后就用增强 for 循环来遍历集合,再通过 getKey() 和 getValue() 方法获取键和值。
通过具体的代码来实现:
import java.util.HashMap;import java.util.Map;import java.util.Set;public class MapIteration {public static void main(String[] args) {Map map = new HashMap();map.put("二哈",250);map.put("金毛",1250);map.put("拉布拉多",2250);map.put("中华田园犬",3250);//通过调用 map 的实例方法 entrySet(),键值对包装成一个整体,//Map.Entry这代码可以理解为是一个类型,用 Set 系列集合来存储Set<Map.Entry> entrySet = map.entrySet();for (Map.Entry entry:entrySet) {String k = entry.getKey();int v = entry.getValue();System.out.println(k+"=="+v);}}}
运行结果为:
2.3 使用 forEach() 方法遍历(Java 8+)
通过 Map 的 forEach() 方法,传入一个 BiConsumer 函数接口来遍历键值对。BiConsumer 接口的 accept() 方法接收两个参数,分别是键和值。
需要注意的是,这里的 forEach() 该 Map 的实例方法。
通过具体的代码来实现:
import java.util.Map;import java.util.HashMap;public class MapIteration {public static void main(String[] args) {Map map = new HashMap();map.put("二哈", 250);map.put("金毛", 1250);map.put("拉布拉多", 2250);map.put("中华田园犬", 3250);/*map.forEach(new BiConsumer() {@Overridepublic void accept(String k, Integer v) {System.out.println(k+"=="+v);}});*///进一步简化为:map.forEach((k, v) -> System.out.println(k + "==" + v));}}
运行结果如下:
补充,其实这种方法本质来说是第二种方法的包装。本质还是使用 entrySet() 方法遍历,源代码如下:
可见,第三种方法是很容易实现对 Map 系列集合的遍历的,就需要一行代码就搞定了,也很容易记住:
map.forEach((k, v) -> System.out.println(k + "==" + v));
本篇先介绍到这里,更多内容点击以下链接:小扳_-CSDN博客