Map补充:map遍历方法和computeIfAbsent()方法

Posted 南淮北安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map补充:map遍历方法和computeIfAbsent()方法相关的知识,希望对你有一定的参考价值。

文章目录

一、Map 的遍历

(1)使用 Iterator 输出 Map 实例

public class Test
    public static void main(String[] args) 
        Map<String,String > map = new HashMap<String, String>();//实例化 map
        map.put("2","Java");
        map.put("1","Python");
        map.put("3","html");
        Set<Map.Entry<String ,String >> allSet = null;//声明一个 Set 集合,指定泛型
        allSet = map.entrySet();//将 Map 接口实例变为 Set 接口实例
        Iterator<Map.Entry<String ,String >> iter = null;//声明 Iterator 对象
        iter = allSet.iterator();//实例化 Iterator 对象
        while (iter.hasNext())
            Map.Entry<String ,String > me = iter.next();//找到 Map.Entry 实例
            System.out.println(me.getKey() + "-->" + me.getValue());//输出 key 和 value
        
        

(2)借助entrySet进行输出

public class Test
    public static void main(String[] args) 
        Map<String,String > map = new HashMap<String, String>();//实例化 map
        map.put("2","Java");
        map.put("1","Python");
        map.put("3","Html");
        for (Map.Entry<String ,String> me:map.entrySet())//输出 Set 集合
            System.out.println(me.getKey() + "-->" + me.getValue());
        
        

(3)借助foreach

Map<String,String > map = new HashMap<String, String>();//实例化 map
map.put("2","Java");
map.put("1","Python");
map.put("3","Html");
map.forEach((key,value)->
            System.out.println(key + " --> "+value);
);

二、map.computeIfAbsent()方法

computeIfAbsent() 方法对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hashMap 中。

语法:

hashmap.computeIfAbsent(K key, Function remappingFunction)

如果 key 对应的 value 不存在,则使用获取 remappingFunction 重新计算后的值,并保存为该 key 的 value,否则返回 value。

比如要将二维数组放到map中,其中将首位array[0]相同的放到一个set里。

public class TestDemo 
    public static void main(String[] args) 
        Map<Integer, HashSet<Integer>> map = new HashMap<>();
        int[][] arr = 1, 2, 1, 3, 2, 3, 2, 4, 4, 5;
        for (int[] array : arr) 
            //如果存在就取出,不存在则新创建一个 set
            HashSet<Integer> set = map.getOrDefault(array[0], new HashSet<>());
            set.add(array[1]);
            //元素添加之后再放入
            map.put(array[0], set);
        
        map.forEach((key, value) -> 
            System.out.println(key + " --> " + value);
        );
    

此时使用computeIfAbsent

for (int[] array : arr) 
	map.computeIfAbsent(array[0], key -> new HashSet<>()).add(array[1]);

以上是关于Map补充:map遍历方法和computeIfAbsent()方法的主要内容,如果未能解决你的问题,请参考以下文章

Go-常识补充-切片-map(类似字典)-字符串-指针-结构体

java中map的常用遍历方法

Thymeleaf遍历Map

Groovymap 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

关于List和Map的遍历方法

Groovymap 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )