美文网首页
10_Map 集合

10_Map 集合

作者: 真是个点子王 | 来源:发表于2020-12-03 19:19 被阅读0次

概述

  • Map集合是一种双列集合,每个元素包含两个值
  • Map集合的每个元素的格式:Key=Value,键值对
  • HashMap:元素按照键是无序,不重复,无索引,值不做要求
  • LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求。

Map集合的特点

  • 1.Map集合的特点都是由键决定的。
  • 2.Map集合的键是无序,不重复的,无索引的。Map集合后面重复的键对应的元素会覆盖前面的整个元素。
  • 3.Map集合的值无要求。
  • 4.Map集合的键值对都可以为null。

Map集合中的常用API

  • public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
  • public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
  • public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
  • public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
  • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。
  • public boolean containKey(Object key):判断该集合中是否有此键。
public class MapDemo {
    public static void main(String[] args) {
        Map<String , Integer> maps = new HashMap<>();
        // 1.添加元素: 无序,不重复,无索引。
        maps.put("iphoneX",10);
        maps.put("娃娃",30);
        maps.put("iphoneX",100);//  Map集合后面重复的键对应的元素会覆盖前面重复的整个元素!
        maps.put("huawei",1000);
        maps.put("生活用品",10);
        maps.put("手表",10);
        // {huawei=1000, 手表=10, 生活用品=10, iphoneX=100, 娃娃=30}
        System.out.println(maps);

        // 2.清空集合
        //maps.clear();
        //System.out.println(maps);

        // 3.判断集合是否为空,为空返回true ,反之!
        System.out.println(maps.isEmpty());

        // 4.根据键获取对应值。
        //Integer value = maps.get("娃娃");
        //System.out.println(value);
        System.out.println(maps.get("娃娃"));

        // 5.根据键删除整个元素。(删除键会返回键的值)
        maps.remove("iphoneX");
        System.out.println(maps);

        // 6.判断是否包含某个键 ,包含返回true ,反之
        System.out.println(maps.containsKey("手表")); // true
        System.out.println(maps.containsKey(10)); // false

        // 7.判断是否包含某个值。
        System.out.println(maps.containsValue(1000)); // true
        System.out.println(maps.containsValue(10)); // true
        System.out.println(maps.containsValue("30")); // false 包含的是整数30不是字符串。

        // 8.获取全部键的集合:public Set<K> keySet()
        // Map集合的键是无序不重复的,所以返回的是一个Set集合。
        Set<String> keys = maps.keySet();
        for (String key : keys) {
            System.out.println(key);
        }

        // 9.获取全部值的集合:Collection<V> values();
        // Map集合的值是不做要求的,可能重复,所以值要用Collection集合接收!
        Collection<Integer> values = maps.values();
        for (Integer value : values) {
            System.out.println(value);
        }

        // 10.集合的大小
        System.out.println(maps.size());

        // 11.合并其他Map集合。(拓展)
        Map<String,Integer> maps2 = new HashMap<>();
        maps2.put("xiaoMi" , 1);
        maps2.put("🔨手机" , 10);
        maps2.put("手表" , 10000);
        maps.putAll(maps2); // 把Map集合maps2的数据全部倒入到maps集合中去
        System.out.println(maps);
    }
}

Map集合的变量方式

  • 1.利用键对值进行遍历
    Set<String> keys = maps.keySet();
    for(String key:keys){
        Object value = maps.get(key);
    }
  • 2.键值对的方式遍历
    • Map集合转换成一个Set集合:Set<Map.Entry<K,V>> entrySet();
    • 此时键值对元素的类型就确定了,类型是键值对实体类型:Map.Entry<K, V>
    • 接下来就可以使用foreach遍历这个Set集合,类型使用Map.Entry<K,V>
    Set<Map.Entry<String,Integer>> entries = maps.entrySet();
    for(Map.Entry<String,Integer> entry:entries){
        String key = entry.getKey();
        Integer value = entry.getValue();
    }
  • 3.Lambda表达式方式遍历
    map.forEach((k,v) ->{
       System.out.println(k + "==" + v); 
    });

案例

  • 需求:输出一个字符串中每个字符出现的次数
  • 分析:
    • (1)键盘录入一个字符串。aabbccddaa123
    • (2)定义一个Map集合,键是每个字符,值是其出现的次数;
    • (3)遍历字符串中的每个字符
    • (4)拿着这个字符去Map集合中看是否有这个字符键
    public class MapDemo{
        public static void main(String[] args){
            // 1.从键盘输入要给字符串
            Scanner scanner = new Scanner(System.in);
            System.out.print("请您输入一个字符串");
            String datas = scanner.nextLine();

            // 2.定义一个Map集合,键是每个字符,值是其出现的次数
            Map<Character, Integer> infos = new HashMap<>();

            // 3.遍历每个字符
            for(int i = 0;i < datas.length() ; i++){
                char ch = datas.charAt(i);
                if(info.containsKey(ch)){
                     infos.put(ch , infos.get(ch) + 1);
                }else{
                    infos.put(ch,1);
                }
            }
            System.out.println(infos);
        }
    }

相关文章

  • 10_Map 集合

    概述 Map集合是一种双列集合,每个元素包含两个值 Map集合的每个元素的格式:Key=Value,键值对 Has...

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • markdown 测试

    集合 集合 集合 引用

  • kotlin学习第五天:集合,高阶函数,Lambda表达式

    集合 list集合 list集合分为可变集合与不可变集合。由list of创建的集合为不可变集合,不能扩容,不能修...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • 集合总结

    集合 集合分为单列集合和双列集合两种: 一.单列集合: Collection是单列集合的顶级接口: 其中有三类集合...

  • 映射、元组、集合

    映射 元组 集合 集合之seq 集合之set 集合之map

  • 16.Collection集合

    主要内容: Collection 集合 迭代器 增强for List 集合 Set 集合 1,集合 集合是java...

  • 集合与有序集合

    集合分为有序集合 (zset) 和无序集合 (set), 一般无序集合也直接说成集合 无序集合 (set) 无序集...

  • python入坑第八天|集合

    好的,各位蛇友,我们今天来学习集合。 内容: 集合的创建 集合操作符号 集合的内置函数 集合的创建 集合用set(...

网友评论

      本文标题:10_Map 集合

      本文链接:https://www.haomeiwen.com/subject/mrkvwktx.html