【发布时间】:2019-08-30 12:56:00
【问题描述】:
我有一个List<Item> ItemList 和List<String> selectedItemList
Item : {id:String, name:string, isSelected:Boolean}
我想将 ItemList 转换为 Map<String,Item>,其中 isSelected = true 或 false(条件:selectedItemList.contains(ItemList[n]))。
key 是 Item 的 id。
我试试这个:
Map<String, Item> result = itemList.stream()
.collect(Collectors.toMap(Item::getId, value -> itemSelectedList.contains(value.getName())));
我的期望:
0 : {0,"item1", true}, 1 : {1,"item1", true} , 2 : {2,"item1", false}...
【问题讨论】:
-
你的尝试有什么问题?
-
逻辑错误。我不知道如何获得我想要的值(我不知道如何在流中使用条件,toMap...)
-
A
Map将键与值相关联,在您的情况下,您将键声明为String,将值声明为Item。无论您的0 : {0,"item1", true}, 1 : {1,"item1", true} , 2 : {2,"item1", false}应该代表哪种数据结构,它都不是Map。
标签: java java-8 java-stream