[英]Group a list of objects by multiple attributes
我正在寻找一种通过多个类属性对对象列表进行分组的好方法。 Google番石榴库提供了按单个属性分组的功能。 我还没有找到可以提供所需功能的实用程序。
见下文。 我已经将分组属性封装到其自己的类Grouping
。 但是,如果存在更好的解决方案,则不必这样做。
包含分组属性的类。
Class Grouping{
private String key1;
private String key2;
private String key3;
//getters, setters
}
表示需要分组的类型的类。
Class Groupable{
private Grouping grouping;
private String x;
private String y;
private String z;
// getters, setters
}
我需要的是一个Map,其中包含一个具有唯一键组的可分组对象作为键。 以及可分组对象的列表作为相应的分组项目。
Map<Grouping, List<Groupable>> groupings;
任何建议都欢迎!
根据@JBNizet和@JohnBollinger的评论回答我自己的问题。
我使用Eclipse IDE,所以我要做的就是转到Source->'Generate hashCode()and equals()..'并在Grouping
类上调用它,以将所有属性包括在重写的实现中。 在那里,番石榴库可以按以下常规方式使用:
Function<Groupable, Grouping> groupFunction = new Function<Groupable, Grouping>(){
@Override
public Grouping apply(Groupable groupable) {
return groupable.getGrouping();
}
};
ImmutableListMultimap<Grouping, Groupable> groupings = Multimaps.index(lsGroupable, groupFunction);
groupings
给了我我所需要的。 lsGroupable
是列表Groupable
对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.