java - 我有一个 treemap<Integer, Person> 其中 Integer 是每个人的唯一属性,我想打印按另一个属性排序的元素

标签 java sorting tree treemap treeset

我的 Person类有一个唯一的整数 ID,我将其用作 TreeMap 的键值.但是,person 类还有另一个属性“age”,它不是每个人唯一的(存在重复项)。我想按允许重复的年龄顺序打印树状图。

我尝试将所有条目放入新的 Treemap 中其中关键是年龄而不是 ID,而是 treemap会删除重复项,这就是我不想要的。

我在某处读到我应该使用 Treemap<Integer, List<Person>)其中整数将是年龄,但我不知道如何添加这些元素并打印它们。

注意:Person 确实实现了可比较的和 compareto方法基于年龄。

请帮忙

最佳答案

您可以从 map 中提取值(Person 对象)的 List,然后实现自定义(匿名)比较器:

List<Person> list = new ArrayList<Person>(map.values());
Collections.sort(list, new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return p1.getAge().compareTo(p2.getAge());
    }
});

因此,列表 将按年龄 排序。

关于java - 我有一个 treemap<Integer, Person> 其中 Integer 是每个人的唯一属性,我想打印按另一个属性排序的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28411127/

相关文章:

python-3.x - 对多索引 pandas 数据框进行排序

c# - 如何在图中找到最长路径

Python-获取树中所有 child 的高度

java - Android - onActivityResult 忽略存储的字节

java - 抛出 JDBC 空指针异常

java - play framework migrate to 2.1.1让我很头疼

javascript - 如何使用下划线的 _.uniq 函数来帮助记录偶数和奇数?

java - 使用 jsoup 解析表时出现问题

javascript:最快的查找方式是字符串位于一组字符串中

C++ 指针在函数调用后在继承中失去值(value)。