java - 将对象列表转换为映射 java 8 流
问题描述
我有 pojo 如下
Class Employee () {
Private name;
Private id;
}
这个员工类用于从 mybatis orm 中获取对象列表(List)。
mybatis 以 List 形式返回输出,因为 mybatis 不支持 Map 作为返回类型
我必须将其转换为地图
我尝试了以下一个但没有奏效,因为它需要 getName() 和 getId() 方法
Map<String, String> map = list.stream().collect(Collectors.toMap(Employee::getId, Employee:getName));
请告知是否有一种方法可以在不修改 Employee pojo 的情况下使用流实现。
注意:我知道我们可以使用 ofr 或 for each 循环来实现。
解决方案
你应该总是发布精心制定的问题,但由于你是新手,所以忽略那部分。我在这里假设您name
和ID
两者都是字符串类型。
下面的代码非常适合您。
Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName));
如果您也想保持秩序,请转到下面提到的。
Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName, (oldValue, newValue) -> oldValue,LinkedHashMap::new));
如果不是这样,如果你添加error message
你得到的东西会很好,这样将能够为你提供详细的帮助。
推荐阅读
- swift - 无法为 SELECT 命令绑定 sqlite 语句
- excel - 将文本框条目传递给单元格时,如果缺少所需信息,则发出警告
- wget - 如何强制 wget 使用 TLS1.2
- apache-kafka - 当 kafka 集群配置了 SASL_SSL 时,为什么 Kafka Streams 需要 DESCRIBE 访问其他主题?
- excel - 工作表索引错误
- java - 我的排序算法说:您的代码没有在时间限制内执行。如何解决这个问题呢
- python - Python HttpTrigger Azure 函数 url 参数作为数组
- reactjs - 在 react-admin 中显示编辑的值
- java - 在 Cassandra 3.x 中禁用节俭
- mysql - 更改现有迁移 laravel 中的枚举默认选项值