我有一个简单的对象,就像这样:
public class Person {
private int id;
private int age;
private String hobby;
//getters, setters
}
我想按照属性对一个Person
列表进行分组。
输出应该像这样
Person count/Age/Hobby
2/18/Basket
5/20/football
为了更好地理解,附上一张图表
X 轴:兴趣爱好分布 Y 轴:人数分布
颜色代表年龄
我已经使用 map 按一个属性进行了分组,但我不知道如何按多个属性进行分组
//group only by age . I want to group by hobby too
personMapGroupped = new LinkedHashMap<String, List<Person>>();
for (Person person : listPerson) {
String key = person.getAge();
if (personMapGroupped.get(key) == null) {
personMapGroupped.put(key, new ArrayList<Person>());
}
personMapGroupped.get(key).add(person);
}
然后我像这样检索可分组的对象:
for (Map.Entry<String, List<Person>> entry : personMapGroupped .entrySet()) {
String key = entry.getKey();// group by age
String value = entry.getValue(); // person count
// I want to retrieve the group by hobby here too...
}
任何建议都将不胜感激。
非常感谢。