[英]TreeMap sorting not working when using Collectors.groupingBy()
我的清单就像
List<Map<String, Object>> sortedList = new ArrayList<>();
我的清单在哪里
[{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,sequence_number = 190002,change_date = 2019-01-05,客户编号= 3101},{column_changed =国籍,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}]]
我按以下方式初始化Map的实例,
Map<String, List<Map<String, Object>>> mySortedMap = new TreeMap<>();
当我使用sequence_number使用Collectors.groupingBy()时,
mySortedMap = sortedList.stream().collect(Collectors.groupingBy(change -> (String)change.get("sequence_number")));
输出如下
{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 =出生日期,sequence_number = 190002,change_date = 2019-01-05,customer_number = 3101},{column_changed =国籍,sequence_number = 190002,change_date = 2019-01-05,customer_number = 3101}]}
但是我需要对键进行排序 。 尽管实例是TreeMap,但键未排序。 我不知道为什么。 谁能帮我这个。
在这里,您将更改mySortedMap引用的对象。 groupingBy()返回的地图可以是任何类型 。 根据文档,
不能保证返回的Map或List对象的类型,可变性,可序列化性或线程安全性。
如果您的列表已排序,请尝试使用,
mySortedMap = sortedList.stream().collect(Collectors.groupingBy(
change -> (String) change.get("sequence_number"), TreeMap::new, Collectors.toList()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.