我是靠谱客的博主 忧伤哈密瓜,最近开发中收集的这篇文章主要介绍Map里的常见方法及遍历1. Map里的常见方法2. Map遍历3. Map的使用场景,统计字符串里每个字符出现的次数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. Map里的常见方法

Map接口用来存储成对的数据

实现类: HashMap / LinkedHashMap / TreeMap / HashTable / Properties

Map的特点:

1. 存储数据都是成对出现的,我们称之为键值对 Key-Value

2. key不允许重复,如果出现重复的key,后一个对应的value会覆盖前一个value(非绝对)

3. 存储的元素是无序的,不能通过下标来获取到元素

Map 和 Collection 这两个接口之间没有任何的继承关系

Map里的常见方法:

size(): 获取键值对的个数

containsKey(Object key): 判断 key 是否存在

containsValue(Object value): 判断value是否存在

put(K k,V v): 存入一个键值对。如果key已经存在,后一个value会覆盖前一个value

putIfAbsent(K k,V v): 存入一个键值对,如果key已经存在,后一个value不再存入

V get(K k): 根据指定的key 获取到对应的value,如果key不存在,返回 null

V getOrDefault(K k,V defaultValue): 根据key获取value,如果key存在,获取到对应的value;如果key不存在,使用默认值

remove(Object key): 根据key移除对应的键值对,返回移除的key对应的value

remove(Object key,Object value): 使用键值对来移除,只有键和值都匹配才能移除!

replace(K k,V v): 使用新的 value替换 旧的value,等价于 再次put(K k,V v)

replace(k k,V oldValue,V newValue): 找到 匹配的k和oldValue,然后使用newValue替换

public class MapDemo {
    public static void main(String[] args) {
        Map<String, String> heroes = new HashMap<>();
        heroes.put("黑旋风", "李逵");
        heroes.put("齐天大圣", "孙悟空");
        // heroes.put("黑旋风", "李鬼");  key存在,后一个value会覆盖前一个
        heroes.putIfAbsent("黑旋风", "李鬼"); // key存在,后一个value不会存入
        heroes.put("斗战胜佛", "孙悟空");
        System.out.println(heroes);

        String value = heroes.get("黑旋风");
        System.out.println(value);

        System.out.println(heroes.get("及时雨"));
        System.out.println(heroes.getOrDefault("及时雨", "宋江"));
        System.out.println(heroes.getOrDefault("齐天大圣", "弼马温"));

        System.out.println(heroes);

        System.out.println(heroes.containsValue("孙悟空"));
        /*String x = heroes.remove("黑旋风");
        System.out.println(x);*/

        heroes.remove("黑旋风", "李鬼");
        System.out.println(heroes);

        heroes.replace("黑旋风", "李鬼", "张三");
        System.out.println(heroes);
    }
}

2. Map遍历

Map遍历相关的方法:

values(): 获取到所有的value组成的 Collection,再使用 Collection的 迭代器来遍历

        这种方式只能获取到所有的 value,不能获取到对应的 key

        key是唯一的,可以通过key获取到value;但是value不唯一,不能通过value获取到对应的key

keySet(): 获取到 所有的 key组成的 Set类型的集合

entrySet(): 获取到 所有的 键值对 组成的 Set集合

public class MapIterator {
    public static void main(String[] args) {
        Map<String, String> heroes = new HashMap<>();
        heroes.put("及时雨", "宋江");
        heroes.put("黑旋风", "李逵");
        heroes.put("齐天大圣", "孙悟空");
        heroes.put("雷神", "索尔");
        heroes.put("钢铁侠", "史塔克");
        heroes.put("美国队长", "罗杰斯");

        /* Map是无序的,不能通过下标获取到元素
        for (int i = 0; i < heroes.size(); i++) {
            System.out.println(heroes.get(i));  把数字i当做key来查找对应的value
        }*/

        /*Collection<String> values = heroes.values();
        for (String value : values) {
            System.out.println(value);
        }*/

        /*Set<String> keySet = heroes.keySet();
        Iterator<String> iterator = keySet.iterator();
        while (iterator.hasNext()) {
            String k = iterator.next();
            System.out.println(k + ":" + heroes.get(k));
        }*/

        /*for (String k : heroes.keySet()) {
            System.out.println(k + ":" + heroes.get(k));
        }*/

        /*Set<Map.Entry<String, String>> entrySet = heroes.entrySet();
        for (Map.Entry<String, String> entry : entrySet) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }*/

        for (Map.Entry<String, String> entry : heroes.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }
}

3. Map的使用场景,统计字符串里每个字符出现的次数

public class MapTest {
    public static void main(String[] args) {
        String s = "dk;gkh;kj;df";

        Map<Character, Integer> counts = new HashMap<>();

        for (char c : s.toCharArray()) {
            /*if (!counts.containsKey(c)) {
                counts.put(c, 1);
            } else {
                counts.put(c, counts.get(c) + 1);
            }*/
            counts.put(c, counts.getOrDefault(c, 0) + 1);
        }
        System.out.println(counts);
    }
}
{"d":2,"k":3, ";":3, "g":1, "h":1, "j":1}

最后

以上就是忧伤哈密瓜为你收集整理的Map里的常见方法及遍历1. Map里的常见方法2. Map遍历3. Map的使用场景,统计字符串里每个字符出现的次数的全部内容,希望文章能够帮你解决Map里的常见方法及遍历1. Map里的常见方法2. Map遍历3. Map的使用场景,统计字符串里每个字符出现的次数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部