java - 按对象的属性对地图进行排序
问题描述
免责声明:我已经发布过这样一个问题,它被标记为重复。请尝试帮助我。我已经浏览了 stackoverflow 上所有以前的方法,但没有任何帮助。所有提到的排序 Map(Key,Values) 的方法在我的情况下都不起作用,因为我还有一步,即检索值的属性。这一次,我尝试了完整的细节。
我在 Java 中有一个 Map (String,Object),我想使用 Object 的属性之一对其进行排序。
例如,假设我有一堂课
class Entry
{
int id;
String name;
String address;
//Rest of the code
}
现在,我创建了一张地图
Map<String,Entry>
我想按类条目的属性 id (Entry.id) 对地图进行排序
请帮忙 !
例如,我有三个 Entry 类的对象
entry1 :
id=1
name="abc"
address="india"
entry2 :
id=2
name="xyz"
address="india"
entry3 :
id=3
name="pqr"
address="india"
现在,我最初的地图如下:
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));
推荐阅读
- google-sheets - 有没有办法将数组公式与过滤视图结合使用并按日期排序
- file-type - 在 Burp Suite 中,我如何完全隐藏文件类型以允许将 .php 文件上传到不安全的站点?
- android - 为什么安装我的游戏(由 unity 2019 制作)时出现此错误?
- c++ - 为什么我可以将可调用目标存储在与类型不匹配的 std::function 中
- microservices - 通信、高可用性和微服务
- angular - 如何强制 nz-input-number 更改模型 onkeypress 而不是 onblur?
- r - 如何将指定函数应用于数据框中的多个变量?
- xaml - 如何设置堆栈布局的“优先级”?
- jira - 如何获取未链接到测试用例的用户故事?有什么查询吗?我已经尝试过链接问题
- java - 如何使用 CIFS 在 Android Studio 中访问文件