首页 > 编程语言 >Java过滤map中两个 key为a和b 变成一个新的map

Java过滤map中两个 key为a和b 变成一个新的map

时间:2024-09-13 19:51:37浏览次数:3  
标签:map Java Map java util key put import originalMap

在 Java 中,可以使用多种方法来从一个 Map 中提取特定键对应的条目,并将其放入新的 Map 中。以下是几种常见的实现方式:

使用 Java 8 及以上版本的流(Stream)

使用流可以简洁地处理这个问题,并且代码易于理解。

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

public class MapFilterExample {
    public static void main(String[] args) {
        Map<String, Integer> originalMap = new HashMap<>();
        originalMap.put("a", 1);
        originalMap.put("b", 2);
        originalMap.put("c", 3);
        originalMap.put("d", 4);

        Map<String, Integer> filteredMap = originalMap.entrySet()
                .stream()
                .filter(entry -> entry.getKey().equals("a") || entry.getKey().equals("b"))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        System.out.println(filteredMap); // 输出: {a=1, b=2}
    }
}

使用传统的循环

这种方法适用于 Java 7 及更早版本,或者不希望使用流时。

import java.util.HashMap;
import java.util.Map;

public class MapFilterExample {
    public static void main(String[] args) {
        Map<String, Integer> originalMap = new HashMap<>();
        originalMap.put("a", 1);
        originalMap.put("b", 2);
        originalMap.put("c", 3);
        originalMap.put("d", 4);

        Map<String, Integer> filteredMap = new HashMap<>();
        for (Map.Entry<String, Integer> entry : originalMap.entrySet()) {
            if ("a".equals(entry.getKey()) || "b".equals(entry.getKey())) {
                filteredMap.put(entry.getKey(), entry.getValue());
            }
        }

        System.out.println(filteredMap); // 输出: {a=1, b=2}
    }
}

使用 Java 8 的方法引用

这种方法与使用流类似,但使用了方法引用来代替 lambda 表达式,使得代码更加简洁。

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

public class MapFilterExample {
    public static void main(String[] args) {
        Map<String, Integer> originalMap = new HashMap<>();
        originalMap.put("a", 1);
        originalMap.put("b", 2);
        originalMap.put("c", 3);
        originalMap.put("d", 4);

        Map<String, Integer> filteredMap = originalMap.entrySet()
                .stream()
                .filter(e -> "a".equals(e.getKey()) || "b".equals(e.getKey()))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        System.out.println(filteredMap); // 输出: {a=1, b=2}
    }
}

使用 Guava 库

如果应用程序已经引入了 Google Guava 库,那么可以利用 FluentIterable 或其他工具类来简化操作。

import com.google.common.collect.Maps;
import com.google.common.collect.Iterables;

import java.util.HashMap;
import java.util.Map;

public class MapFilterExample {
    public static void main(String[] args) {
        Map<String, Integer> originalMap = new HashMap<>();
        originalMap.put("a", 1);
        originalMap.put("b", 2);
        originalMap.put("c", 3);
        originalMap.put("d", 4);

        Map<String, Integer> filteredMap = Maps.filterKeys(originalMap, k -> "a".equals(k) || "b".equals(k));

        System.out.println(filteredMap); // 输出: {a=1, b=2}
    }
}

选择哪种方法取决于具体需求以及使用的 Java 版本。如果正在使用的是较新的 Java 版本,那么推荐使用流式 API,因为它提供了更现代且功能丰富的编程模型。

标签:map,Java,Map,java,util,key,put,import,originalMap
From: https://blog.51cto.com/u_16694558/12007881

相关文章

  • java计算机毕业设计开放式实验室设备预约系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育和科研活动的日益发展,实验室作为实践与创新的重要场所,其资源利用效率与管理水平成为衡量教育质量与科研能力的重要指标。传统实验室管理......
  • java计算机毕业设计连锁民宿平台系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展与消费者对个性化住宿体验需求的日益增长,传统酒店业正面临前所未有的挑战与机遇。连锁民宿作为新兴住宿形态,以其独特的地理位置......
  • java计算机毕业设计流浪宠物管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在城市化进程不断加速的今天,流浪宠物问题日益凸显,成为城市管理中不可忽视的一环。随着人们生活水平的提高和宠物文化的兴起,宠物的数量急剧增加,但由于......
  • java计算机毕业设计移动端的名医寻访平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,医疗健康领域正经历着前所未有的变革。传统就医模式面临挂号难、信息不对称、名医资源分配不均等痛点,尤其在偏远地区,优......
  • Java设计模式之命令模式介绍和案例示范
    一、命令模式简介命令模式(CommandPattern)是一种行为型设计模式,它将请求封装为一个对象,从而使你可以用不同的请求对客户端进行参数化、对请求排队或记录日志,以及支持可撤销的操作。命令模式的核心思想是将发出请求的对象与执行请求的对象分离,从而解耦请求的调用与处理逻辑......
  • java实现根据word模板赋值及电子签章实现
    一:添加相关依赖<!--电子签章实现<!&ndash;免费版.free只支持前三页转化&ndash;>--><dependency><groupId>e-iceblue</groupId><artifactId>spire.office.free</artifactId><......
  • JavaScript空值判断
    JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等类型,类型不同,判断方法也不同。所以在文章中写了一个函数,用以判断JS变量是否空值,如果是undefined,null,'',NaN,false,0,[],{},空白字符串,都返回true,否则返回false。functionisEmpty(v){sw......
  • Java中异常的学习
    异常目录异常程序错误类型什么是异常?异常的主要作用?在实际的程序设计中,并非所有错误都能在编译期间被侦测到。运行时错误会引起异常(exception,也称例外):程序运行过程中出现的事件,它中断正常的程序控制流程。没有异常处理代码的程序,可能会非正常结束,有时候会引起严重问题。程序错......
  • Java 中实现动态代理
    在Java中,动态代理(DynamicProxy)允许在运行时创建代理对象来处理方法调用,而不需要在编译时定义具体的实现类。Java的java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口是实现动态代理的关键。步骤:创建接口:定义一个接口,代理对象将会实现这个接口......
  • Java笔试面试题AI答之单元测试JUnit(4)
    文章目录19.简述JUnitorg.junit.TestSuite类的作用?1.组织测试类2.简化测试执行3.灵活配置测试环境4.嵌套测试套件注意事项20.在JUnit中@Test注释的作用和用法?作用用法21.简述Junit基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)?22.编写代......