Java 8 is not maintaining the order while grouping - Stack Overflow
Not maintaining the order is a property of the Map
that stores the result. If you need a specific Map
behavior, you need to request a particular Map
implementation. E.g. LinkedHashMap
maintains the insertion order:
groupedResult = people.collect(Collectors.groupingBy( p -> new GroupingKey(p, groupByColumns), LinkedHashMap::new, Collectors.mapping((Map<String, Object> p) -> p, toList())));
By the way, there is no reason to copy the contents of mapList
into an array before creating the Stream
. You may simply call mapList.stream()
to get an appropriate Stream
.
Further, Collectors.mapping((Map<String, Object> p) -> p, toList())
is obsolete. p->p
is an identity mapping, so there's no reason to request mapping
at all:
groupedResult = mapList.stream().collect(Collectors.groupingBy( p -> new GroupingKey(p, groupByColumns), LinkedHashMap::new, toList()));
Read full article from Java 8 is not maintaining the order while grouping - Stack Overflow
No comments:
Post a Comment