当前位置: 首页 > 面试题库 >

Java 8清单 进入地图>

顾兴昌
2023-03-14
问题内容

我有一个清单

List<MyObject> list;

我想将其转换为 Map<MyObject, List<String>>

我试过了

Map<MyObject, List<String>> map = list
    .stream()
    .collect(Collectors.toMap(item -> item, Collections.emptyList()));

但是Java对以下内容不满意item->item

no instance(s) of type variable(s) T exists so that List<T> conforms to Function<? super T, ? extends U>

感谢帮助


问题答案:

的第二个参数Collectors.toMap期望a
Function将项目转换为将被放置在地图中的值。但是,您提供了Collections.emptyList(),而不是Function

看起来您想为每个项目都添加一个空列表,因此请更改

Collections.emptyList()

item -> Collections.emptyList()

但是,Collections.emptyList()返回一个
不可变的 空列表,这可能不是您想要的。

返回一个空列表(不可变)。该列表是可序列化的。

你可能想要

item -> new ArrayList<>()


 类似资料:
  • 我试图对对象中的每个条目执行映射操作。 我需要从键中去掉前缀,并将值从一种类型转换为另一种类型。我的代码从 映射实例并使用,这看起来很难看。 还有更好的选择吗?使用for循环似乎更好: 我应该避免使用流API吗?还是我错过了更好的方式?

  • 问题内容: 我是Java的新手,我需要列出列表列表。我可以在python中做到这一点,因为列表的元素可以是列表,因此在嵌入式列表中将引用列表,并且将引用嵌入式列表的zeroeth元素。有什么简单的方法可以在Java中实现此行为? 问题答案: 所有其他答案在技术上都是正确的,但是恕我直言,如果您实施了粗略的列表列表,您将无法在正确的抽象级别上处理数据。例如,我很确定列表列表在您的业务领域中已经意味着

  • 问题内容: 运行代码 退货 因此,每次在列表列表中每次更新元组(列表)的第一个参数,但第二个参数list [0]却没有更新。有人可以解释这里发生的事情并提出解决方法吗?我想输出 问题答案: 列表是可变类型-为了创建副本(而不只是传递相同的列表),您需要明确地这样做: 但是,已经是Python内置的名称-最好不要将该名称用作变量。这是一个不用作变量名并复制的版本: 请注意,我演示了两种不同的方法来复

  • 问题内容: 如何合并列表列表? 进入 如果我可以在合并列表之前在每个项目的开头和结尾添加一个值(例如html标签),那就更好了。 即,最终结果将是: 问题答案: 要串联列表,可以使用 要添加HTML标签,您可以使用列表推导。

  • 问题内容: 轻松转换成。例如: 但是我想和我自己以及 供应商 一起做。 我想出了这个: 问题: 是否有一种更简单,更省时或更有效的方法?例如,像这样的东西(不起作用): 如果我只需要定义供应商,而不是供应商,该怎么办? 问题答案: 您可能具有以下内容: 通过将收集器传递给的所需地图的提供者,收集器可用于指定所需的地图类型。然后,用于收集分组到同一键的元素的下游收集器为,从而可以收集到从给定供应商获

  • 主要内容:1 Java8 JDBC改进, 2 Java JDBC驱动程序操作,3 Java JDBC4.2 DriverAction示例1 Java8 JDBC改进 在Java 8中,Java在JDBC API中进行了两项重大更改。 1)JDBC-ODBC桥已被删除。 Oracle不支持JDBC-ODBC桥。Oracle建议您使用数据库供应商提供的JDBC驱动程序,而不要使用JDBC-ODBC Bridge。 2)在JDBC 4.2中添加了一些新功能。 Java JDBC 4.2引入了以下功能: