gpt4 book ai didi

java - 根据变量对自定义 Java 类的数组列表进行排序

转载 作者:行者123 更新时间:2023-12-02 09:31:23 24 4
gpt4 key购买 nike

我有一个自定义 Java 类,其中包含两个变量:用户名分数

我希望创建一个包含多个数组的 ArrayList。然后,我想根据它们的 score

值按从低到高的顺序对它们进行排序

高分.class

public class Highscore implements ConfigurationSerializable {

String username;
int score;

public Highscore(String username, int score) {
this.username = username;
this.score = score;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public int getScore() {
return score;
}

public void setScore(int score) {
this.score = score;
}

@Override
public Map<String, Object> serialize() {
Map<String, Object> mappedObject = new LinkedHashMap<String, Object>();
mappedObject.put("username", username);
mappedObject.put("score", score);
return mappedObject;
}

public static Highscore deserialize(Map<String, Object> mappedObject) {
return new Highscore((String) mappedObject.get("username"),
(int) mappedObject.get("score"));
}
}

例如,下面显示了包含多个 Highscore 的 ArrayList。我只想查看基于从低到高的 score,然后将 Highscore 排序到另一个 ArrayList 中。

ArrayList<Highscore> highscores = new ArrayList<>();
highscores.add(new Highscore("user1", 10));
highscores.add(new Highscore("user2", 0));
highscores.add(new Highscore("user3", -15));
highscores.add(new Highscore("user4", 30));
highscores.add(new Highscore("user5", 5));

// Now, sort the highscores based on their 'score'

提前致谢。

最佳答案

您真的被限制只能使用 List

国际海事组织 SortedSet 更适合您的目标。您可以使用 TreeSet 请注意 TreeSet元素使用其自然顺序或通过在设定创建时提供的比较器进行排序。此外,它还提供有保证的 log(n)基本操作(添加、删除和包含)的时间成本,因此计算效率非常高。

例如,您可以执行以下操作:

SortedSet<Highscore> highscores =
new TreeSet<>(Comparator.comparingInt(highscore -> highscore.score));
highscores.add(new Highscore("user1", 10));
highscores.add(new Highscore("user2", 0));
highscores.add(new Highscore("user3", -15));
highscores.add(new Highscore("user4", 30));
highscores.add(new Highscore("user5", 5));

现在highscores包含按 score 升序排序的所有对象.

此外,如果您需要获取 List来自highscores ,然后简单地:

List<Highscore> highscoreList = new ArrayList<>(highscores);

这种方式的优点:是灵 active 和效率更好,因为SortedSet之后任何查询都会花费您 O(log n)O(n)时间。如果你使用 List你总是被迫执行排序,这将需要 O(n log n) .

关于java - 根据变量对自定义 Java 类的数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57938425/

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