繁体   English   中英

通过多个属性对对象列表进行分组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM