Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对对象中的子HashMap进行排序_Java - Fatal编程技术网

Java 如何对对象中的子HashMap进行排序

Java 如何对对象中的子HashMap进行排序,java,Java,我需要实现排序,但我有问题。我有classUser,里面有带地址的HashMap。目前我不明白如何使用Comparator对子实例进行排序 Map<String, String> address = new HashMap<>(); address.put("1", "firstAddress"); address.put("2", "secondAddress"); address.put("3", "thirdAddress"); User firstUser =

我需要实现排序,但我有问题。我有class
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);
Map address=newhashmap();
地址。填写(“1”,“第一地址”);
地址。放入(“2”,“第二地址”);
地址。放置(“3”,“第三条”);
User firstUser=新用户(1,“Viktor”,“050000000”,地址);
用户secondUser=新用户(2,“Sergey”,“0600000000”,地址);
用户thirdUser=新用户(3,“Vladimir”,“0700000000”,地址);
列表用户=新建ArrayList();
添加(firstUser);
添加(第二个用户);
添加(thirdUser);
List sortedUser=users.stream().sorted(用户->{

return user.getAddress()我认为应该按地址(自然顺序)对用户进行排序

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

根据键或值对地址进行排序?@Stanislav您是想按地址对用户进行排序,还是想在用户内部对Hashmap进行排序。@Deadpool,是的。我需要通过key@Tarun是的。根据地址,您的
用户
类是什么样子的?如果您在地图中存储地址,您可能需要使用列表来代替?或者如果您的排序在按键上,使用
树形图
@Stanislav可以再次检查吗
    List<User> sortedUser = users.stream().sorted((user1,user2)-> 
     user1.getAddress().get(user1.getId()).compareTo(user2.getAddress().get(user2.getId()))).collect(Collectors.toList());