是否有一种方便的Java8流API方法可以从列表
转换为映射
,如下例所示:
List<Character> charList = "ABCDE".chars().mapToObj(e->(char)e).collect(Collectors.toList());
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < charList.size(); i++) {
map.put(charList.get(i), i);
}
您可以使用以下令人讨厌的技巧,但它并不优雅,在链表上根本不高效:
List<String> list = Arrays.asList("a", "b", "c");
Map<String, Integer> result =
IntStream.range(0, list.size())
.boxed()
.collect(Collectors.toMap(list::get, Function.identity()));
它的可读性也不如简单的for循环imo。所以我会坚持下去。
我有一个问题与转换列表对象映射字符串,列表对象。我正在寻找与一个关键名称的汽车所有组件的地图,一个值由汽车与此组件表示 我写了一个解决方案,但寻找一个更好的流解决方案。
问题内容: 我有一个带有以下签名的类: 我想要一个来自a 的键,该键将是该类的名称。我如何使用java8流按es名称对列表进行分组?所有es在名称上都是唯一的。 可以在单个流中求解,还是应该以某种方式拆分它还是采用经典解决方案? 问题答案:
我有map,我想有一个列表,它按键的对应值排序(最小到最大)。我的尝试是:
我在迭代一个对象内的列表时遇到了一个问题,该对象内嵌在另一个映射中。我的目标是迭代这个列表并生成一个映射 ,我希望使用streams和lamdas来实现这一点。 我在上面看到了,我需要通过迭代FolderBo中的elementList从elementBo创建一个带有map 的映射。folderBo本身就在Modelbo的地图内。
我想使用Java流按对用户列表进行分组。 例如,我有。
我有一个类型的变量,其中item如下所示: 我想将其重新排序为,其中键是customerId,然后值是具有该客户ID的所有项的列表。