当前位置: 首页 > 知识库问答 >
问题:

Java 8列表到映射[重复]

戈正初
2023-03-14

是否有一种方便的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);
    }

共有1个答案

帅博简
2023-03-14

您可以使用以下令人讨厌的技巧,但它并不优雅,在链表上根本不高效:

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流按对用户列表进行分组。 例如,我有。

  • 我有一个对象带有字段