Ну, если вы хотите использовать groupingBy
, вы могли бы сделать это:
private Map<Long, List<Long>> getMapGroupingBy(List<Object[]> list) {
Map<Long, List<Long>> map2 = new HashMap<>();
map2 = list.stream().collect(Collectors.groupingBy(obs -> (Long)obs[0], Collectors.mapping(obs -> (obs.length>1?(Long)obs[1]:null), Collectors.toList())));
return map2;
}
Если вы больше намерены получить результат, а не использовать groupingBy()
, вы можете сделать так:
private Map<Long, List<Long>> getMapForEach(List<Object[]> list) {
Map<Long, List<Long>> map = new HashMap<>();
list.stream().forEach(obs -> {
map.computeIfAbsent((Long)obs[0], a -> new ArrayList<Long>()).add(obs.length>1?(Long)obs[1]:null);
});
return map;
}
Если вы напечатаете map
, вы получите что-то вроде этого:
{1234=[123, null, 678], 1223=[null], 1225=[345]}
Ваш список ввода должен выглядеть следующим образом:
List<Object[]> list = new ArrayList<>();
list.add(new Object[] {1234l,123l});
list.add(new Object[] {1234l});
list.add(new Object[] {1234l,678l});
list.add(new Object[] {1223l});
list.add(new Object[] {1225l,345l});