开发者社区> 问答> 正文

如何在Java中按键对map列表进行排序?

我尝试按键对HashMap的链接列表进行排序

想要的输出:

[{Addres = Asstreet,Name = Aron},{Addres = Bstreet,Name = Bernie},{Addres = Cstreet,Name = Carol}}

  //Making Contacts

        HashMap contact1 = new HashMap();
        HashMap contact2 = new HashMap();
        HashMap contact3 = new HashMap();


        contact1.put("Name", "Bernie");
        contact1.put("Addres", "Bstreet");


        contact2.put("Name", "Aron");
        contact2.put("Addres", "Astreet");


        contact3.put("Name", "Carol");
        contact3.put("Addres", "Cstreet");


   //Making ContactBook

        LinkedList contactBook = new LinkedList();

        contactBook.add(contact1);
        contactBook.add(contact2);
        contactBook.add(contact3);


        System.out.println(contactBook);

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 12:49:50 1177 0
2 条回答
写回答
取消 提交回答
  • 取出所有key的set集合,对set进行排序

    2020-03-30 21:16:34
    赞同 展开评论 打赏
  • 您要做的是创建一个代表这些条目的POJO,并将它们存储在List中。然后,您可以根据名称或地址等条件对该列表进行排序。

            class Person {
    
                private final String name;
    
                private final String address;
    
                Person(String name, String address) {
                    this.name = name;
                    this.address = address;
                }
    
                public String getName() {
                    return name;
                }
    
                public String getAddress() {
                    return address;
                }
    
                @Override
                public String toString() {
                    return String.format("name=%s, address=%s", name, address);
                }
            }
    
            List<Person> people = new ArrayList<>(Arrays.asList(
                 new Person("Bernie", "Bstreet"),
                 new Person("Aron", "Astreet"),
                 new Person("Carol", "Cstreet")
            ));
    
            List<Person> sortedByName = people.stream()
                    .sorted(Comparator.comparing(Person::getName))
                    .collect(Collectors.toList());
    
            List<Person> sortedByAddress = people.stream()
                    .sorted(Comparator.comparing(Person::getAddress))
                    .collect(Collectors.toList());
    

    回答来源:Stack Overflow

    2020-03-27 12:50:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载