我正在寻找一种通过多个类属性对对象列表进行分组的好方法。 Google guava library提供了按单个属性分组的功能。我还没有找到一个实用工具,它提供了我正在寻找的东西。
见下文。我已将分组属性封装到自己的类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
}
我需要的是一个包含as键的Map,一个具有唯一键集的Groupable对象。以及可分组对象列表作为相应的分组项目。
Map<Grouping, List<Groupable>> groupings;
欢迎任何和所有建议!
答案 0 :(得分:0)
根据@JBNizet和@ JohnBollinger的评论回答我自己的问题。
我使用Eclipse IDE,所以我需要做的就是去Source - &gt; '生成hashCode()和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
个对象的列表。