【发布时间】:2016-01-13 15:11:24
【问题描述】:
我正在尝试使用 Java 8 Collection-Stream 按多个属性对对象列表进行分组。
这很好用:
public class MyClass
{
public String title;
public String type;
public String module;
public MyClass(String title, String type, String module)
{
this.type = type;
this.title = title;
this.module= module;
}
}
List<MyClass> data = new ArrayList();
data.add(new MyClass("1","A","B"));
data.add(new MyClass("2","A","B"));
data.add(new MyClass("3","A","C"));
data.add(new MyClass("4","B","A"));
Object result = data.stream().collect(Collectors.groupingBy((MyClass m)
-> m.type, Collectors.groupingBy((MyClass m) -> m.module)));
但我想让它更有活力。 我只想指定一个应该用于 GroupBy 的字符串数组(或列表)。
类似:
Object groupListBy(List data, String[] groupByFieldNames)
{
//magic code
}
我想打电话:
groupListBy(data, new String[]{"type","module"});
如何使 groupBy-Method 更具动态性,就像我的示例中一样?
【问题讨论】:
标签: java collections java-8 grouping java-stream