繁体   English   中英

使用Collectors.groupingBy()时TreeMap排序不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM