首页 > 解决方案 > 如何对对象中的子HashMap进行排序

问题描述

我需要实现排序,但我有问题。我有课User,里面有HashMap地址。目前我不明白如何对子实例进行排序Comparator

Map<String, String> address = new HashMap<>();

address.put("1", "firstAddress");
address.put("2", "secondAddress");
address.put("3", "thirdAddress");

User firstUser = new User(1, "Viktor", "0500000000", address);
User secondUser = new User(2, "Sergey", "0600000000", address);
User thirdUser = new User(3, "Vladimir", "0700000000", address);

List<User> users = new ArrayList<>();

users.add(firstUser);
users.add(secondUser);
users.add(thirdUser);

List<User> sortedUser = users.stream().sorted(user -> {
    return user.getAddress() <-- How to sort address?
}).collect(Collectors.toList());

sortedUser.forEach(System.out::println);

标签: java

解决方案


我认为这应该按地址(自然顺序)对您的用户进行排序。

    List<User> sortedUser = users.stream().sorted((user1,user2)-> 
     user1.getAddress().get(user1.getId()).compareTo(user2.getAddress().get(user2.getId()))).collect(Collectors.toList());

推荐阅读