通过java流将字符串列表转换为Map,使用key作为整数自动增量

问题描述 投票:0回答:1

以下代码可以使用迭代模式执行。

List<String> strList = Arrays.asList("abc", "def","ghi", "jkl");
Map<Integer, String> strMap = new HashMap<>();
int i = 0;
for(String str : strList) {
    strMap.put(i++, str);
}

是否可以使用 Java Streams API 来完成上述操作?

我期待以上代码以 Java Streams API 的形式出现。

java list collections hashmap java-stream
1个回答
0
投票

您可以使用 IntStream#rangeIntStream#boxed 创建一个包含 0 到

Stream<Integer>
(含)之间的整数值的
strList.size() - 1
。然后您就可以使用
collect
Collectors.toMap
进行操作,如下所示。

 Map<Integer, String> strMap = IntStream.range(0, strList.size())
                .boxed()
                .collect(Collectors.toMap(Function.identity(), strList::get));

toMap

keyMapper
使用生成的整数值作为映射的键,valueMapper从列表中相应的索引获取值。

注意:如果列表不是ArrayList,则

strList::get
将不是恒定时间操作。

© www.soinside.com 2019 - 2024. All rights reserved.