Bootstrap

Map集合5种遍历方式

目录

1、 方法

2、Map集合的遍历方式

2.1、键找值

2.2、键值对

2.3、Lambda表达式遍历

2.4、方法引用遍历

2.5、stream流遍历方式


1、 方法

package com.csdn;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapDemo {
    public static void main(String[] args) {
        //1、添加元素:无序,不重复,无索引
        Map<String, Integer> maps = new HashMap<>();
        maps.put("张三丰", 80);
        maps.put("张翠山", 40);
        maps.put("张无忌", 20);
        maps.put("赵敏", 18);

        System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}

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

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

        //4、根据键获取对应值:public V get(Object key)
        System.out.println(maps.get("张三丰"));//null

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

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

        //7、判断是否包含某个值
        System.out.println(maps.containsValue(80));//false

        //8、获取全部键的集合:public Set<K> keySet()
        Set<String> keys = maps.keySet();
        System.out.println(keys);//[]

        //9、获取全部值的集合:Collection(V) values();
        Collection<Integer> values = maps.values();
        System.out.println(values);//[]

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

        //11、合并其他Map集合。(拓展)
        Map<String, String> map1 = new HashMap<>();
        map1.put("灰太狼", "抓羊");
        map1.put("红太狼", "奖励灰太狼");
        Map<String, String> map2 = new HashMap<>();
        map2.put("灰太狼", "不抓羊");
        map2.put("红太狼", "打灰太狼");
        map2.put("小灰灰", "放羊");
        map1.putAll(map2);
        System.out.println(map1);//{红太狼=打灰太狼, 灰太狼=不抓羊, 小灰灰=放羊}
        System.out.println(map2);//{红太狼=打灰太狼, 灰太狼=不抓羊, 小灰灰=放羊}
    }
}

2、Map集合的遍历方式

2.1、键找值

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {
    public static void main(String[] args) {
        //1、添加元素:无序,不重复,无索引
        Map<String, Integer> maps = new HashMap<>();
        maps.put("张三丰", 80);
        maps.put("张翠山", 40);
        maps.put("张无忌", 20);
        maps.put("赵敏", 18);
        System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}
        //1、键找值:第一步:先拿到集合的全部键
        Set<String> keys = maps.keySet();
        //2、第二步:遍历每个键,根据键提取值
        for (String key : keys) {
            Integer value = maps.get(key);
            System.out.println(key + "===>" + value);
            //张翠山===>40
            //张三丰===>80
            //赵敏===>18
            //张无忌===>20
        }
    }
}

2.2、键值对

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {
    public static void main(String[] args) {
        //1、添加元素:无序,不重复,无索引
        Map<String, Integer> maps = new HashMap<>();
        maps.put("张三丰", 80);
        maps.put("张翠山", 40);
        maps.put("张无忌", 20);
        maps.put("赵敏", 18);
        System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}
        //1、把Map集合转化成Set集合
        Set<Map.Entry<String, Integer>> entries = maps.entrySet();
        //2、开始遍历
        for (Map.Entry<String, Integer> entry : entries) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+"===>"+value);
            //张翠山===>40
            //张三丰===>80
            //赵敏===>18
            //张无忌===>20
        }
    }
}

2.3、Lambda表达式遍历

package com.csdn;
import java.util.HashMap;
import java.util.Map;
public class MapEach {
    public static void main(String[] args) {
        //1、添加元素:无序,不重复,无索引
        Map<String, Integer> maps = new HashMap<>();
        maps.put("张三丰", 80);
        maps.put("张翠山", 40);
        maps.put("张无忌", 20);
        maps.put("赵敏", 18);
        System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}
/*
        maps.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String s, Integer integer) {
                System.out.println(s + "===>" + integer);
            }
        });
*/
        maps.forEach((key, value) -> System.out.println(key + "===>" + value));
        //张翠山===>40
        //张三丰===>80
        //赵敏===>18
        //张无忌===>20
    }
}

2.4、方法引用遍历

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {
    public static void main(String[] args) {
        //1、添加元素:无序,不重复,无索引
        Map<String, Integer> maps = new HashMap<>();
        maps.put("张三丰", 80);
        maps.put("张翠山", 40);
        maps.put("张无忌", 20);
        maps.put("赵敏", 18);
        System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}

        Set<Map.Entry<String, Integer>> entries = maps.entrySet();
        entries.forEach(System.out::println);
        //张翠山=40
        //张三丰=80
        //赵敏=18
        //张无忌=20

    }
}

2.5、stream流遍历方式

package com.csdn;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEach {
    public static void main(String[] args) {
        //1、添加元素:无序,不重复,无索引
        Map<String, Integer> maps = new HashMap<>();
        maps.put("张三丰", 80);
        maps.put("张翠山", 40);
        maps.put("张无忌", 20);
        maps.put("赵敏", 18);
        System.out.println(maps);//{张翠山=40, 张三丰=80, 赵敏=18, 张无忌=20}

        Set<Map.Entry<String, Integer>> entries = maps.entrySet();
        entries.stream().forEach(System.out::println);
        //张翠山=40
        //张三丰=80
        //赵敏=18
        //张无忌=20
    }
}

Map集合的应用有很多,以下是一些常见的应用场景:

  1. 统计词频:将文本中出现的单词作为Key,出现次数作为Value存储在Map集合中,可以方便地统计每个单词在文本中出现的次数。

  2. 存储配置信息:将配置文件中的配置项和对应的配置值存储在Map集合中,可以方便地读取和修改配置信息。

  3. 缓存数据:将经常使用的数据存储在Map集合中,可以提高程序的运行效率,避免频繁访问数据库或文件系统。

  4. 保存用户信息:将用户ID作为Key,用户信息作为Value存储在Map集合中,可以实现对用户信息的快速访问和修改。

  5. 实现图结构:使用Map集合可以方便地实现图结构,其中Key表示图中的节点,Value表示与该节点相邻的节点和边的属性。

  6. 实现缓存一致性:在分布式系统中,使用Map集合可以方便地实现缓存一致性,其中不同节点上的Map集合存储相同的缓存数据,通过协调不同节点上的更新操作可以保证缓存数据的一致性。

Map集合的应用有以下几个方面:

  1. 存储键值对:Map集合可以存储键值对,其中键和值都可以是任意数据类型,键值对之间是一一对应的关系。可以通过遍历Map集合,获取键值对的值,实现对数据的访问和操作。

  2. 数据去重:Map集合的键具有唯一性,因此可以利用这个特点进行数据去重操作。例如,在处理用户提交的表单数据时,可以使用Map集合来存储用户提交的数据,然后根据键值对的唯一性,进行去重操作。

  3. 统计数据:Map集合可以存储不同的数据值,并统计每个数据值出现的次数。例如,在统计某个文本中每个单词出现的次数时,可以使用Map集合来存储每个单词出现的次数。

  4. 缓存数据:Map集合可以用来缓存数据,提高数据访问的效率。例如,在Web开发中,可以使用Map集合来缓存一些经常使用的数据,减少对数据库的访问次数,提高系统的性能。

  5. 实现自定义数据类型的映射:Map集合中的键和值可以是任意对象,因此可以通过Map集合来实现自定义数据类型的映射。例如,在处理图形界面中的控件时,可以使用Map集合来实现控件的名称和控件对象之间的映射关系。

Map集合是一种键值对(key-value)的数据结构,常用于存储和操作一些映射关系。下面是一些Map集合的应用:

  1. 数据库操作:将表中的数据以Map集合的形式存放,便于进行查询、更新等操作。

  2. 缓存管理:常见的缓存管理工具如Redis等都使用Map集合来存储缓存数据,方便进行查询和删除。

  3. 配置文件读取:将配置文件中的键值对转换为Map集合,方便读取和使用。

  4. 数据统计与分析:将数据按照不同的维度进行分类,以Map集合的形式存储,方便进行统计和分析。

  5. 索引管理:在搜索引擎等场景中,Map集合可以用来存储关键词和对应的文档ID,以便快速检索。

  6. Web应用开发:常见的Web框架如Spring、Struts2等都会使用Map集合来存储请求参数、Session数据等。

  7. 图像处理:在一些图像处理工具中,Map集合可以用来存储像素点的坐标和颜色等信息。

Map集合的应用包括:

  1. 存储数据:Map集合可以用来存储大量的数据,可以用于缓存数据、存储配置信息等。

  2. 统计数据:Map集合可以用来统计数据,例如在某个地区统计人口数、统计某个商品的销售量等。

  3. 分类数据:Map集合可以用来分类数据,例如将学生按照班级、年级进行分类。

  4. 查找数据:Map集合可以用来查找数据,例如在一个学生集合中查找某个学生的信息。

  5. 记录数据:Map集合可以用来记录数据,例如记录一个学生的出勤情况、记录某个用户的登录情况等。

  6. 维护关系:Map集合可以用来维护关系,例如维护一个每个员工的上级关系、维护客户和订单之间的关系等。

  7. 唯一性处理:Map集合可以用来处理数据的唯一性,例如在一个用户注册系统中,可以使用Map集合来判断用户名是否已经被注册。

;