Java 8:从Java List创建元组

时间:2016-02-06 04:18:14

标签: java hashmap

我希望使用Java 8s的新功能从Java列表创建键值对并插入到地图中

考虑此列表[1, 2, 3, 4]

我正在寻找2个元组,[1, 2][3, 4]

这是我的代码,我从一个答案复制到类似问题的想法

我哪里错了?没有任何内容添加到地图中。

IntStream.range(1, list.size())
        .filter(i -> i + 1 % 2 == 0)
        .mapToObj(i -> new AbstractMap.SimpleEntry<>(list.get(i - 1), list.get(i)))
        .forEach(entry -> map.put(entry.getKey(), entry.getValue()));

1 个答案:

答案 0 :(得分:2)

您已经进入常见的Java 8陷阱:您已经创建了流,描述了您希望如何处理它,但没有触发它进行处理。

mapToObj来电之后,您应该通过调用方法collect来触发处理,让我们说List,然后拨打forEach。或者直接使用Collectors.toConcurrentMap

IntStream.range(1, list.size())
            .filter(i -> (i + 1) % 2 == 0)
            .mapToObj(i -> new AbstractMap.SimpleEntry<>(list.get(i - 1), list.get(i)))
            .collect(Collectors.toConcurrentMap(o -> o.getKey(), o -> o.getValue()))