【发布时间】:2019-09-15 18:16:26
【问题描述】:
我有一个自定义类 Highscore 的 ArrayList
数组列表包含多个Highscore的
如下面的代码所示,有一个重复的条目。也就是说,highscores.add(new Highscore("user 1", 25)); 当我说重复时,我的意思是相同的 String(用户名)和 int(分数)值
我希望能够检测到它,以便这些条目中只有 1 个留在 ArrayList
代码:
ArrayList<Highscore> highscores = new ArrayList<>();
highscores.add(new Highscore("user 1", 25));
highscores.add(new Highscore("user 2", 10));
highscores.add(new Highscore("user 3", 55));
highscores.add(new Highscore("user 1", 25));
highscores.add(new Highscore("user 2", 5));
highscores.add(new Highscore("user 3", 30));
高分:
public class Highscore implements ConfigurationSerializable {
String username;
public 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"));
}
}
我看到有些人建议使用 HashSet 或 LinkedHashSet,但在我的情况下,这不起作用,因为它根据 Highscore 的 id 识别重复项,这总是不同的。
提前致谢:)
【问题讨论】:
-
覆盖自定义类中的等于和哈希码。