【发布时间】:2020-04-02 12:19:07
【问题描述】:
问题
我有一个 Student 对象的列表(我只是以这种方式编写列表以便它变得更具可读性):
class Student {
int id;
String name;
String department;
}
[
{"id": 1, "name": "some name 1", "department": "English"},
{"id": 2, "name": "some name 2", "department": "Maths"},
{"id": 3, "name": "some name 3", "department": "Science"}
]
我想根据部门的自定义顺序对这个列表进行排序。
["Maths", "Science", "English"]
最终的排序列表应如下所示:
[
{"id": 2, "name": "some name 2", "department": "Maths"},
{"id": 3, "name": "some name 3", "department": "Science"},
{"id": 1, "name": "some name 1", "department": "English"}
]
我尝试了什么
- 我对列表进行了迭代,列出了所有部门,并对所有列表进行了排序,最后,我对所有列表进行了合并。但它占用了太多额外空间,优化不够。
- 我尝试使用可比较,但这样我只能按字段对对象进行排序。
我想要什么
我想按 id 排序,但在此之前.. 我也想对部门进行排序。部门的排序将基于部门列表。第一个应该是数学,第二个应该是科学,最后一个应该是英语。
我想要一些建议,例如如何以更好的性能实现这一目标。
【问题讨论】:
-
自定义排序顺序是什么?
-
你试过的选项2,这不是你想做的吗?即按字段排序,只是它是自定义顺序。有什么问题?您可以在逻辑中添加您想要的顺序,并基于此返回值。 (在这种情况下,我宁愿建议一个比较器来获得更好的设计,而不是比较)
-
不,这个问题与这个问题不同。 @大牛
-
如何从 Comparator @gurioso 给出排名
-
是的,我阅读了您的评论,但我应该如何实现这一点。我应该如何使用这个 hashmap 实现比较器。
标签: java list sorting collections comparator