【发布时间】:2015-05-01 19:11:55
【问题描述】:
我有一个我正在制作的纸牌游戏的高分数组列表。这个arraylist可以存储的分数需要有一个有限的限制,系统的用户可以定义(假设现在是10)。数组列表中对象中的字段是玩家的姓名(字符串)、他们的分数(int)和玩家的(几乎)唯一的 ID(Long,System.currentTimeMillis())。 arraylist 应该按分数排序,其中分数最低的是最好的。但是,如果 arraylist 中的所有玩家都具有相同的分数并且添加了具有该分数的新玩家,我希望将具有最新分数的玩家(ID 最高的玩家)存储在较旧的玩家之前,所以旧的被丢弃了。
基本上我需要一种方法来按两个字段对 ArrayList 进行排序——首先是得分,从低到高,然后如果得分匹配,则按 ID 对它们进行排序。删除我已经主要介绍过的多余元素,但如果有一种整合方式,我会很感兴趣。
编辑:我正在尝试对具有这些属性的对象的 Arraylist 进行排序,而不是对刚刚放入它们的单个 Arraylist 进行排序。我的错。
【问题讨论】:
-
请贴出你目前写的代码。
-
你卡在哪里了?
-
你能不能只创建一个类来存储你的数据,实现可比较的docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html,然后运行标准的 Collections.sort 函数?
-
object ordering 上的 Java 教程可能会有所帮助。
-
@mattias 我不知道如何对两个字段进行排序。我只知道一种排序方法。