@DarkByte2015

Map of list to list of map?

Есть мап из списков, надо сделать из него список из мапов. Подскажите пожалуйста как это сделать? Пока что идей в голову не приходит... Чтобы было понятнее подкину пример (в json для наглядности).

Это исходные данные:
{
	"field1": [ 1, 2, 3 ],
	"field2": [ true, false, true ]
}


А это должно получиться:
[
	{
		"field1": 1,
		"field2": true
	},
	{
		"field1": 2,
		"field2": false
	},
	{
		"field1": 3,
		"field2": true
	}
]


P.S. Можно (и даже нужно) использовать StreamAPI.
  • Вопрос задан
  • 332 просмотра
Решения вопроса 1
@Braidner
Сложность дикая, но для обычных карт сойдет, единственное, нужны листы одинаковых размеров.
public static void main(String[] args) {
        Map<String, List<Object>> map = new LinkedHashMap<>();
        map.put("field1", Arrays.asList(1, 2, 3));
        map.put("field2", Arrays.asList(true, false, true));
        map.put("field3", Arrays.asList("123", "456", "789"));
        map.put("field4", Arrays.asList(3, 2, 1));

        List<Map<String, Object>> result = IntStream.range(0, map.values().iterator().next().size())
                .mapToObj(index -> {
                    Map<String, Object> test = new LinkedHashMap<>();
                    map.forEach((s, objects) -> test.put(s, objects.get(index)));
                    return test;
                }).collect(Collectors.toList());

        System.out.println(result);
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы