java - 通过 ArrayList 对象中的特定值对 ArrayList 进行排序?

标签 java sorting arraylist

我想要创建一个评分系统,其中有一个玩家列表,其得分从最高到最低。

我的 PlayerObject.class 类:

public class PlayerObject {

    private String playerName;
    private int playerScore;

    public int getScore() {
        return this.playerScore;
    }

    public String getName() {
        return this.playerName;
    }

    public void setNameAndScore(String givenName, int givenScore) {
        this.playerName = givenName;
        this.playerScore = givenScore;
    }

}

我的数组:

ArrayList<PlayerObject> allPlayers = new ArrayList<PlayerObject>();

知道如何根据玩家的 playerScore 属性对数组列表中的每个玩家进行排序吗?

最佳答案

有很多方法可以做到这一点。首先这是 PlayerObject 类:

public class PlayerObject implements Comparable<PlayerObject> {
    private String playerName;
    private int playerScore;

    public PlayerObject(String playerName, int playerScore) {
        this.playerName = playerName;
        this.playerScore = playerScore;
    }

    public String getPlayerName() {
        return playerName;
    }

    public int getPlayerScore() {
        return playerScore;
    }

    @Override
    public int compareTo(PlayerObject o) {
        return Integer.compare(playerScore, o.playerScore);
    }
}

这就是排序的方法:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");

        List<PlayerObject> players = new ArrayList<>(2);
        players.add(new PlayerObject("player1", 2));
        players.add(new PlayerObject("player2", 4));

        // if PlayerObject implements Comparable<PlayerObject>
        Collections.sort(players);
        // or if you want explicit Comparator
        players.sort(new Comparator<PlayerObject>() {
            @Override
            public int compare(PlayerObject o1, PlayerObject o2) {
                return Integer.compare(o1.getPlayerScore(), o2.getPlayerScore());
            }
        });
        // or you can use lambda if you use Java 8
        players.sort((o1, o2) -> Integer.compare(o1.getPlayerScore(), o2.getPlayerScore()));
        // or even more concise
        players.sort(Comparator.comparingInt(PlayerObject::getPlayerScore));
    }
}

这里是一个可以帮助您的文档:

Comparable

Comparator

关于java - 通过 ArrayList 对象中的特定值对 ArrayList 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46620554/

相关文章:

java - 将 ArrayList 传递给 fragment

java - maven报错JAVA_HOME环境变量未正确定义的解决方法

java - 对Java原始数据类型(Byte和Int)的疑问

python - 是否可以直接使用 pymongo 对子文档的 mongodb 数组进行排序?

excel - 宏到自动排序表

python - 使用python和tornado根据mongodb中的日期对列表进行排序

java - 使用 for 循环和 if 语句将字符串添加到 2D Arraylist

java - JTable 由 ArrayList 填充,结果不好

java - 如何让eclipse像java文件一样处理没有扩展名的文件?

java - 双减精度问题