@devpy14

Как преобразовать String[] в Map через Stream API?

Есть массив стрингов:
String[] array = {"name", "Ivanov", "country", "Ukraine", "city", "Kiev", "age", null};

нужно преобразовать в Map след. вида, используя Stream API:
{name=Ivanov, country=Ukraine, city=Kiev, age=null}
  • Вопрос задан
  • 97 просмотров
Решения вопроса 2
Bavashi
@Bavashi Куратор тега Java
String[] array = {"name", "Ivanov", "country", "Ukraine", "city", "Kiev", "age", null};
        
Map<String, String> map = IntStream.range(0, array.length-1)
      .filter(i -> i % 2 == 0)
      .mapToObj(i -> Arrays.copyOfRange(array, i, i+2))
      .collect(Collectors.toMap(i -> i[0]==null?"null":i[0], i -> i[1]==null?"null":i[1]));
        
System.out.println(map);
Ответ написан
Erik_Mironov
@Erik_Mironov
Если вам нужны ключи и значения в исходном порядке, то используйте LinkedHashMap.
String[] array = {"name", "Ivanov", "country", "Ukraine", "city", "Kiev", "age", null};

       Map<String, String> map = Stream.iterate(
                Arrays.asList(array), list -> list.subList(2, list.size()))
                .limit(array.length / 2)
                .collect(Collectors.toMap(
                        list -> list.get(0) == null ? "null" : list.get(0),
                        list -> list.get(1) == null ? "null" : list.get(1),
                        (x, y) -> y, LinkedHashMap::new));

        map.entrySet().forEach(System.out::println);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы