Java 8 将简单列表转换为映射

2023-11-30

import java.util.function.*;
import java.util.*;
public class Main
{
    public static void main(String[] args) {
        List<Integer> newList = new ArrayList<Integer>();
        newList.add(1);
        newList.add(2);
        newList.add(3);
        newList.add(4);

        Map<Integer,String> formMap = new LinkedHashMap<Integer,String>(); 
        Function<Integer,Map<Integer,String>> myFunc = i->{
          if(i%2==0)
          {
              formMap.put(i,"even");
          }
          return formMap;
        };

        Map<Integer,String> newMap = newList.stream().map(i->myFunc.apply(i)).collect(Collectors.toMap(
        entry -> entry.getKey(), // keyMapper
        entry -> entry.getValue(), // valueMapper
        (first, second) -> first,  // mergeFunction
        () -> new LinkedHashMap<>() // mapFactory
    ));

    }
}

如何通过对列表中的对象执行一些操作,然后将其放入地图中,将上述简单列表转换为地图。 我仅从网上获取了上述 Collectors.toMap() 代码。 请帮我解决上述查询/代码。


Your map步骤转换aStream<Integer> to a Stream<Map<Integer,String>>。为了收集那个Stream到一个单一的Map, 你可以写:

Map<Integer,String> newMap = 
    newList.stream()
           .flatMap(i->myFunc.apply(i).entrySet().stream())
           .collect(Collectors.toMap(Map.Entry::getKey, // keyMapper
                                     Map.Entry::getValue, // valueMapper
                                     (first, second) -> first,  // mergeFunction
                                     LinkedHashMap::new)); // mapFactory

or

Map<Integer,String> newMap = 
    newList.stream()
           .map(myFunc)
           .flatMap(m->m.entrySet().stream())
           .collect(Collectors.toMap(Map.Entry::getKey, // keyMapper
                                     Map.Entry::getValue, // valueMapper
                                     (first, second) -> first,  // mergeFunction
                                     LinkedHashMap::new)); // mapFactory

当然,如果你只想过滤掉奇数并将剩余的数字映射到“偶数”,你可以简单地写:

Map<Integer,String> newMap = 
    newList.stream()
           .filter(i -> i % 2 == 0)
           .collect(Collectors.toMap(Function.identity(),
                                     i -> "even",
                                     (first, second) -> first,
                                     LinkedHashMap::new));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8 将简单列表转换为映射 的相关文章

  • 从文件中读取文本并将每行中的每个单词存储到单独的变量中

    我有一个包含以下内容的 txt 文件 1 1111 47 2 2222 92 3 3333 81 我想逐行读取并将每个单词存储到不同的变量中 例如 当我读取第一行 1 1111 47 时 我想将第一个单词 1 存储到var 1 1111 进
  • cucumber.json 报告被重新运行场景报告覆盖

    我有一个具有相同技术堆栈 JAVA1 8 Cucumber JVM JUnit Maven 的 UI 测试项目和一个 API 测试项目 这两个项目都向我展示了这个问题 可能是因为两者都存在相同的依赖关系集 我使用了使用 maven sure
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • 在 Java 中重新抛出异常而不丢失堆栈跟踪

    在 C 中 我可以使用throw 语句重新抛出异常 同时保留堆栈跟踪 try catch Exception e if e is FooException throw Java中有没有类似的东西 不会丢失原始堆栈跟踪 catch Whate
  • 用Java截取网页的屏幕截图[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一个免费的工具可以读取给定的网页并截取它的屏幕截图 我使用 VirtualFramebuffer 和 Firefox Binary
  • Vaadin框架播放视频

    我可以使用 Vaadin Framewotk 播放视频吗 主要思想是从本地驱动器加载 flv 或 avi 格式的视频文件 并使用 vaadin 框架在网络上播放 谢谢 Sampler中有一个示例 http demo vaadin com s
  • 为什么需要添加工件 JSR305 才能使用 Guava 14+?

    在stackoverflow上查找信息时 我看到了一个与我类似的问题 但没有真正的答案here https stackoverflow com questions 3800033 guava r07 gwt and javax annota
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • JConsole主类

    我正在尝试使用其 Main 类从命令行启动 JConsole 我提取了 jconsole jar 的内容 在 MANIFEST MF 中我可以看到 Main Class sun tools jconsole JConsole 所以我尝试运行
  • Java 线程 JavaDoc

    我编写了一个只能在特定线程上调用的方法 是否应该将标准注释或注释添加到方法的 javadoc 中来表示这一点 不知道有任何这样的标准注释 Java 并发实践 http www javaconcurrencyinpractice com 在第
  • 自 Java 7 以来 HttpServer 延迟 1 秒

    我们正在使用内部HttpServer项目中的类 用于通过 HTTP 在客户端和服务器之间交换数据 当我们切换到 Java 7 时 我们意识到结果交付存在延迟 我们可以将问题简化为以下示例 Class EchoServer创建上下文 echo
  • javax.validation 的 @AssertTrue - 它不应该创建错误消息吗?

    我在 Spring MVC 命令 bean 中有以下代码 AssertTrue public boolean isConditionTrue return false private boolean conditionTrue 我的 JSP
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • Java JDT 解析器。获取VariableDeclarationFragment的变量类型

    我一直在用 JDT 实现 Java 解析器 但我不知道当变量的节点类型为变量声明片段 我只有在涉及到时才发现如何获取变量类型变量声明 我的代码如下 public boolean visit VariableDeclarationFragme
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • 术语“可序列化”是什么意思? [复制]

    这个问题在这里已经有答案了 不太确定我读过的定义可序列化实际上做了什么 import java io Serializable import java text StringCharacterIterator import java uti
  • 删除子类中的注释?

    我有一个子类 需要一个注释 在删除的父类中声明 做这个的最好方式是什么 public class Parent MyAnnoation String foobar public class Child extends Parent here
  • 如何使用属性文件在log4j2中创建多个日志文件?

    我正在使用 property 文件在特定路径中创建日志文件 但我正在使用它创建单个文件 以下是我的属性文件代码 status error dest err name PropertiesConfig property filepath ap
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具

随机推荐

  • 从 mcrypt_decrypt 到 openssl_decrypt

    我有一个问题 我想用 open ssl 解密替换对 mcrypt 的函数调用 但输出是混合的 这是 mcrypt 实现 效果很好 decrypted trim mcrypt decrypt MCRYPT RIJNDAEL 128 subst
  • 在 JPA 上映射 Oracle XMLType (EclipseLink)

    我们的项目有一些特殊要求 其中之一是从 Oracle 10g 数据库的 XMLType 数据库列获取数据 我们找到了一个使用 JDBC 的简单解决方案 但它会使应用程序有点混乱 因为所有数据访问都是通过 JPA 完成的 使用的实现是 Ecl
  • 使用 HTML5 创建音频可视化工具

    我正在尝试使用我在网上找到的示例对在线广播流使用音频可视化这一页 然而 与发现的问题类似这个帖子 我的音频文件 即使使用本地文件进行测试 就是没有声音 当然可视化也没有任何作用 我的 HTML 如下
  • 在 Firefox 和 Chrome 中呈现 HTML

    div style height 20 width 70 div div gt div style height 20 width 30 div 在 Chrome 中 这两个部分位于同一行 但是两个div之间有一个小差距 但在 Firefo
  • 根据多个数据块的列值改变点颜色 gnuplot

    我的问题非常类似于this其一 从中我学到了很多东西 但是 我正在使用多个数据块 如下所示 1 2 3 4 5 6 7 8 0 4 3 0 4 5 7 2 3 0 4 5 0 5 6 7 我将它们绘制如下 plot file txt ind
  • 为什么 Python 创建的 MD5 哈希与在 shell 中使用 echo 和 md5sum 创建的 MD5 哈希不同?

    Python MD5 哈希值与 shell 上的 md5sum 命令创建的哈希值不同 为什么 gt gt gt import hashlib gt gt gt h hashlib md5 gt gt gt h update mystring
  • SSIS版本检查

    这是我在这个论坛上的第一篇文章 我一直坚持使用 Microsoft SSIS 软件包 但我真的不知道如何打败它 我已经提到了 SSIS 包文件 我尝试在 SQL Server 2005 上使用 Business Intelligence D
  • 在 contenteditable div 中设置插入符位置

    Intro 当编辑 contenteditable DOM 对象的内容时 不同的浏览器有不同的行为 例如 Firefox 18 0 创建一个新段落 p 或换行符 br 在某些情况下 Chrome 24 会创建一个 p div 为了解决这个问
  • 如何修复 iOS 12 Safari Cors 预检错误?

    我试图更好地理解 COR 因为我们的 Web 应用程序的一些用户抱怨说 自从他们升级到 iOS 12 后 他们收到了预检错误 来自网络检查器的错误 Error Preflight response is not successful Err
  • 导出可运行的 JAR 文件不支持 UTF-8 编码 - Java Eclipse

    我使用 eclipse IDE 制作了这个小型 Java 程序 我已将工作区设置为支持 UTF 8 并且程序在从 eclipse 执行时运行良好 该程序的一部分是将一些数据写入文件 需要 UTF 8 因为它是阿拉伯语 我需要导出一个可运行的
  • java.io.IOException:找不到 Main [动态功能模块] 的 PROCESSED_RES 输出

    将动态模块添加到已有 6 种风格的多模块项目中 出现这个错误 ERROR Unable to resolve dependency for dynMod debug compileClasspath Could not resolve pr
  • 如何检查指针是否指向数组或单个 int 或 char

    我想知道一个指针是否指向一个array或单身integer 我有一个需要两个指针的函数 int and char 作为输入并判断指针是否指向array或单身integer pointer pointer 4 pointer1 pointer
  • 如何导入 XML 表 Google Sheets

    所以我有一个谷歌表 我想通过 ergast com API 导入 F1 排位赛和比赛结果 我只需要表中的驱动程序和位置信息 但如果更容易的话 我很乐意导入整个表 我尝试过 IMPORTHTML IMPORTFEED IMPORTXML 但无
  • 使用网络抓取提供数据框

    我正在尝试将一些刮取的值附加到数据框中 我有这个代码 import time import requests import pandas import pandas as pd from bs4 import BeautifulSoup f
  • 使用 dotnetzip 压缩文件,打开时文件已损坏

    我从字节数组在控制器中创建了一个 zip 文件 并将该 zip 文件作为文件结果返回 当我下载 zip 文件并解压该文件时 它已损坏 我这样做 byte fileBytes array MemoryStream fileStream new
  • 如何将网页转换为图像?

    我想将 aspx HTML 页面 用户界面 转换为图像 例如 JPEG 我正在使用下面的代码 Protected Sub btnGet Click ByVal sender As Object ByVal e As System Event
  • Raspberry Pi 3 上的 Google Assistant SDK:音频设置不起作用

    我一直在尝试将 G Assistant 安装到 Raspberry Pi3 上 我在以下链接中有疑问 https developers google com assistant sdk prototype getting started p
  • 我可以说 MVP = 3 Tier Archi 吗?

    从最近几天开始 我一直在为我的新 Web 应用程序寻找最佳架构 该应用程序将使用 C 在 ASP Net 中开发 到目前为止 我只发现并研究了以下3个 三层架构 注 作者 层我的意思是逻辑层 模型视图控制器 MVC 模型视图演示者 MVP
  • 使用各种调度队列和 NSOperationQueue 的流程执行时间和性能

    我的应用程序包中有一个 XML 我正在解析这个 XML 文件 我使用以下方法解析了这个 XMLNSXMLParser并使用以下方式 在主线程上串行运行整个代码 使用调度队列 GCD 2 1 使用创建我自己的调度队列调度队列创建 2 2 使用
  • Java 8 将简单列表转换为映射

    import java util function import java util public class Main public static void main String args List