java - 如何对对象中的子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);
解决方案
我认为这应该按地址(自然顺序)对您的用户进行排序。
List<User> sortedUser = users.stream().sorted((user1,user2)->
user1.getAddress().get(user1.getId()).compareTo(user2.getAddress().get(user2.getId()))).collect(Collectors.toList());
推荐阅读
- python - 如何与我从脚本登录的新 shell 交互?
- html - 相对于 div 的覆盖加载程序的问题
- sparql - Sparql 端点与 2 个 Sparql 端点合并
- xamarin - Xamarin 表单 Android 自定义条目渲染器在查看一次后适用于所有条目
- c - 学习 C 中文件的语法
- jenkins - 多分支作业扫描无法发现远程 GitHub 存储库标签
- segue - 无法将图像从 tableViewCell 传递到 viewController
- c# - Linq List.Contains(x => ...) - CS0103 x 在当前上下文中不存在(在 foreach 中)
- firebase - 关于 Firebase 火焰计划存储
- makefile - 从另一个调用外部 Makefile 时不推荐使用语法错误