我有一个高分的arraylist用于我正在制作的纸牌游戏.这个arraylist可以存储的分数需要有限的限制,系统的用户可以定义(现在让我们说10).arraylist中对象中的字段是玩家的名字(字符串),他们的得分(int)和玩家的(几乎)唯一ID(Long,System.currentTimeMillis()).arraylist应按分数排序,其中最低分数最佳.但是,如果arraylist中的所有玩家具有相同的分数并且添加了该分数的新玩家,我希望具有最新分数的玩家(ID最高的玩家)存储在较旧的玩家之前,所以旧的被丢弃了.
基本上我需要一种方法来按两个字段对ArrayList进行排序 - 首先得分,从低到高,然后如果得分匹配则按ID排序.删除我已经覆盖的多余元素,尽管如果有一种集成方法我会有兴趣听到它.
编辑:我正在尝试对具有这些属性的对象的Arraylist进行排序,而不是仅仅抛出它们的单个arraylist.我的坏.
如果您使用Java 8,那么使用方法引用嵌套比较器的方法很简单:
List<Player> players = // ...
players.sort(Comparator
.comparing(Player::getScore)
.thenComparing(Player::getId));
Run Code Online (Sandbox Code Playgroud)
可以在Comparator JavaDoc中找到更多信息.