Java 8, используйте 2 массива для создания hashmap - PullRequest
0 голосов
/ 02 мая 2018

У меня есть 2 массива строк. Как я могу перебрать оба массива одновременно, чтобы создать HashMap, где Key идет из первого массива, а значение приходит из второго массива.

например. Array1 = {"A", "B", "C", "D"}
Array2 = {"apple", "boy", "cat", "dog"}

Результирующий HashMap = [{A: яблоко}, {B: мальчик}, {C: кошка}, {D: собака}]

Вот мой код, но он не работает.

AtomicInteger index = new AtomicInteger();
Stream<String> stream = Stream.of(array2);
stream.forEach(x -> mappedData.put(array1[index.getAndIncrement()],x));

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Попробуйте,

Map<String, String> mergedMap = IntStream.range(0, first.length).boxed()
                .collect(Collectors.toMap(i -> first[i], i -> second[i]));
0 голосов
/ 02 мая 2018

Предполагая, что они имеют одинаковый размер, дубликатов или нулей нет:

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]))
...