java - 按对象的属性对 map 进行排序

标签 java sorting object hashmap

免责声明:我已经发布过一次这样的问题,它被标记为重复。请尝试帮助我。我已经在 stackoverflow 上浏览了所有以前的方法,但没有任何帮助。提到的所有排序 Map(Key,Values) 的方法在我的情况下都不起作用,因为我还有一步,即检索值的属性。这一次,我尝试了完整的细节。

我在 Java 中有一个 Map (String,Object),我想使用对象的一个​​属性对其进行排序。

例如假设我有一个类

class Entry
{
    int id;
    String name;
    String address;
    //Rest of the code
}

现在,我创建了一个 map

 Map<String,Entry>

我想通过类Entry(Entry.id)的属性id对 map 进行排序

请帮忙!

比如我有三个Entry类的对象

entry1 :
        id=1
        name="abc"
        address="india"
entry2 :
        id=2
        name="xyz"
        address="india"
entry3 :
        id=3
        name="pqr"
        address="india"

现在,我最初的 map 如下:

Key :   Value
first:  entry2
second: entry3
third : entry1

排序后应该是这样的

Key :   Value
third : entry1
first:  entry2
second: entry3

最佳答案

您可以使用流 API 轻松完成任务:

Map<String, Entry> resultSet = myMap.entrySet()
                .stream()
                .sorted(Comparator.comparingInt(e -> e.getValue().getId()))
                .collect(Collectors.toMap(Map.Entry::getKey,
                        Map.Entry::getValue,
                        (left, right) -> left,
                        LinkedHashMap::new));

关于java - 按对象的属性对 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50453256/

相关文章:

javascript string.split (',' ) 在应该创建数组时创建对象

python - Django 获取随机对象

java - Firebase Firestore 分布式计数器文档代码崩溃

java - Java 新手 - 如何编写用于排序的 compareTo 方法

Java根据另一个数组对多个数组进行排序

java - 我怎样才能用数组替换我代码中的 ArrayList 并且它仍然有效?

java - 如何使用 "Person"列表创建整数集合?

java - Netbeans 7.1.2 JavaFX UnsatisfiedLinkError

java - 作业挑战研究,随机生成的字符串+数字比较

java - 以 utf-8 形式发送输入值? (J汤)