两个常用Map(LinkedHashMap和ConcurrentHashMap)+Map集合的遍历+Map集合中常用方法(getOrDefault()、putIfAbsent()和merge())

一、LinkedHashMap和ConcurrentHashMap

1、LinkedHashMap

(1)特点:元素被放入的顺序与元素被遍历取出的顺序一致

(2)举例:

Map<Character,Integer> map
                = new LinkedHashMap<>();
        map.put('a', 1);
        map.put('b', 2);
        map.put('c', 3);
        System.out.println(map);

2、ConcurrentHashMap(面试常问)

特点:允许并发

二、Map集合的遍历

Map<Character,Integer> map
                = new LinkedHashMap<>();
        map.put('a', 1);
        map.put('b', 2);
        map.put('c', 3);

1、方法一:使用key的Set集合遍历

(1)特点:单独拿键,用键拿值

(2)举例:

for(char key: map.keySet()){
       System.out.println(key + ":" + map.get(key));
}

2、方法二:使用value的Collection集合遍历

(1)特点:单独拿值

(2)举例:

Collection<Integer> values = map.values();
for(Integer v : values){
            System.out.println(v);
}

3、方法三:使用Entry的Set集合遍历

(1)特点:单独拿键值,单独拿值

(2)举例:

for(Map.Entry<Character,Integer> pair : map.entrySet()){
            System.out.println(pair.getKey()+":"+pair.getValue());
}

4、Map集合不能使用Iterator迭代器进行遍历,Collection集合可以使用Iterator迭代器进行遍历,原因是Collection集合继承了Iterable接口

三、Map集合中的getOrDefault()、putIfAbsent()和merge()

Map<Character,Integer> map
                = new LinkedHashMap<>();
        map.put('a', 1);
        map.put('b', 2);
        map.put('c', 3);

1、getOrDefault():Map集合中键存在则返回键对应的值,不存在则返回给定的值

(1)键存在

Integer result=map.getOrDefault('c', 99);
System.out.println(map);
System.out.println(result);

(2)键不存在

Integer result=map.getOrDefault('d', 99);
System.out.println(map);
System.out.println(result);

2、putIfAbsent():Map集合中给定键存在则不发挥作用给定键不存在则将该键值对加入Map集合

(1)给定键存在

map.putIfAbsent('c', 88);
System.out.println(map);

(2)给定键不存在

map.putIfAbsent('d', 88);
System.out.println(map);

3、merge():Map集合中给定键存在,则在对应值上加上所给值,给定键不存在则将此新键值对添加到Map集合中(完成加值和添加新键值对两个功能)

(1)给定键存在

        map.merge('c',20,Integer::sum );
        System.out.println(map);

(2)给定键不存在

        map.merge('d',20,Integer::sum );
        System.out.println(map);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值