gpt4 book ai didi

java - 按字段的自定义顺序对对象列表进行排序

转载 作者:行者123 更新时间:2023-11-30 05:22:49 25 4
gpt4 key购买 nike

问题

我有一个 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"}
]

我尝试过的

  1. 我迭代了列表,列出了所有部门的列表,并对所有列表进行了排序,最后,我将所有列表合并在一起。但它占用了很多额外的空间,优化不够。
  2. 我尝试使用比较,但这样我只能按字段对对象进行排序。

我想要什么

我想按 id 排序,但在此之前..我也想对部门进行排序。部门排序将根据部门列表进行。第一个应该是数学,第二个应该是科学,最后一个应该是英语。

我想要一些建议,例如如何以更好的性能实现这一目标。

最佳答案

您可以创建一个枚举来保存不同部门的优先级。即

enum SchoolDepartmentEnum{
ENGLISH(1,3,"English"),

MATHS(2,1,"Maths"),

SCIENCE(3,2,"Science");

constructor: SchoolDepartmentEnum(int id, int priority, string name);

}

然后创建一个比较器类,它将使用您创建的枚举中的优先级 ID。

关于java - 按字段的自定义顺序对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59248145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com