如何在 Java 8 中使用两个数组创建 HashMap?

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

我有两个

String
数组。如何同时循环两个数组以创建一个
HashMap<String, String>
,其中键来自第一个数组,值来自第二个数组?

例如。

Array1 = {"A", "B", "C", "D"}
Array2 = {"apple", "boy", "cat", "dog"}

生成的 HashMap:

[{A:apple}, {B:boy}, {C:cat}, {D:dog}]

这是我的代码,但它不起作用。

AtomicInteger index = new AtomicInteger();
Stream<String> stream = Stream.of(array2);
stream.forEach(x -> mappedData.put(array1[index.getAndIncrement()],x));
java dictionary java-8 java-stream iteration
1个回答
2
投票

假设它们具有相同的大小,则没有重复项或空值:

IntStream.range(0, first.length)
         .mapToObj(x -> new SimpleEntry<>(first[x], second[x]))
         .collect(Collectors.toMap(Entry::getKey, Entry::getValue))

您可以将

SimpleEntry
替换为
Arrays.asList
或在 java-9
List.of
中也

或者:

IntStream.range(0, first.length)
         .boxed()
         .collect(Collectors.toMap(x -> first[x], y -> second[y]))
© www.soinside.com 2019 - 2024. All rights reserved.