Java 8 Collection-Streamを使用して、複数の属性でオブジェクトのリストをグループ化しようとしています。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に使用するString-Array(またはList)を指定したいだけです。
ような何か:
Object groupListBy(List data, String[] groupByFieldNames)
{
//magic code
}
と私は呼びたい:
groupListBy(data, new String[]{"type","module"});
がどのように私は私の例のように、GROUPBY-方法がよりダイナミックにすることができますか?