My list is like,
List<Map<String, Object>> sortedList = new ArrayList<>();
where my list is as,
[{column_changed=first_name, sequence_number=190001, change_date=2019-01-01, customer_number=3100}, {column_changed=last_name, sequence_number=190001, change_date=2019-01-01, customer_number=3100}, {column_changed=mail_id, sequence_number=19002, change_date=2019-01-05, customer_number=3101}, {column_changed=date_of_birth, sequence_number=190002, change_date=2019-01-05, customer_number=3101}, {column_changed=nationality, sequence_number=190002, change_date=2019-01-05, customer_number=3101}, {column_changed=contact_number, sequence_number=19003, change_date=2019-01-10, customer_number=3102}]
I initialize an instance of Map as follows,
Map<String, List<Map<String, Object>>> mySortedMap = new TreeMap<>();
When I use Collectors.groupingBy() using sequence_number,
mySortedMap = sortedList.stream().collect(Collectors.groupingBy(change -> (String)change.get("sequence_number")));
the output is as follows,
{190001=[{column_changed=first_name, sequence_number=190001, change_date=2019-01-01, customer_number=3100}, {column_changed=last_name, sequence_number=190001, change_date=2019-01-01, customer_number=3100}], 19003=[{column_changed=contact_number, sequence_number=19003, change_date=2019-01-10, customer_number=3102}], 19002=[{column_changed=mail_id, sequence_number=19002, change_date=2019-01-05, customer_number=3101}, {column_changed=date_of_birth, sequence_number=190002, change_date=2019-01-05, customer_number=3101}, {column_changed=nationality, sequence_number=190002, change_date=2019-01-05, customer_number=3101}]}
But I need the keys to be sorted . Though the instance is a TreeMap, the keys are not sorted. I could'nt figure out why. Can anyone help me with this.
Here you are changing the object referred by mySortedMap. The map returned by groupingBy() can be of any type . From documentation,
There are no guarantees on the type, mutability, serializability, or thread-safety of the Map or List objects returned.
If your list is sorted try using,
mySortedMap = sortedList.stream().collect(Collectors.groupingBy(
change -> (String) change.get("sequence_number"), TreeMap::new, Collectors.toList()));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.