【发布时间】:2015-08-23 20:37:14
【问题描述】:
我想获取一组对象(在这种情况下为ObjectInstance),我想按一个属性对它们进行分组,并将结果列表按另一个属性排序。
Set<ObjectInstance> beans = server.queryMBeans(null, null);
Map<String, List<String>> beansByDomain = beans.stream()
.collect(groupingBy( (ObjectInstance oi) -> oi.getObjectName().getDomain(),
mapping((ObjectInstance oi) -> oi.getObjectName().getCanonicalKeyPropertyListString(),
toList() )));
上面的表达式创建了正确的数据结构:Map,其中键是ObjectInstance 对象的域,值是属性列表的列表。我想要的是现在对列表进行排序,以确保它们按字母顺序排列。有没有办法在同一个表达式中做到这一点?
一个想法是在.stream() 之后添加.sort(),但这真的可以保证工作吗?
【问题讨论】:
标签: java sorting lambda grouping java-stream