Java:以百分比为单位的高核心列表



我想创建一个包含值和名称的列表。该值是玩家获得的两位小数的百分比(例如0.94),而名称只是玩家的名称。

我有这个清单:

List<Highscore> highscore = new LinkedList<Highscore>(Arrays.asList());

Highscore包含:

String percent;
String name;

对这个列表进行排序的最佳方法是什么,所以百分比最高的是第一位,依此类推。我见过一些Comparator方法,但我根本不理解它们,它们对我不起作用。例如:

if (highscore.size() > 0) {
    Collections.sort(highscore.size, new Comparator<Campaign>() {
        @Override
        public int compare(final Campaign object1, final Campaign object2) {
            return object1.getName().compareTo(object2.getName());
        }
       } );
   }

将它们存储在TreeSet中,并使具有高分的对象Comparable用于首先进行比较,然后命名第二个。(或者在执行相同操作的TreeSet上使用自定义Comparator)。这将把它们放在一个永久排序的集合中。

否则,你的例子是正确的,除了你使用的Comparator,它只看名字而不是分数。

将百分比存储为整数(或浮点值)而不是字符串会使这更容易。

无论你做什么,你都需要一个Comparator,看起来像:

new Comparator<Campaign>() {
    @Override
    public int compare(final Campaign object1, final Campaign object2) {
        int result = //Compare your scores here - however you store them will change this bit
        if (result != 0) {
             return result;
        }
        // If scores are equal then just return the result of a comparison by name
        return object1.getName().compareTo(object2.getName());
    }
}

需要进行姓名比较,否则两个得分相同的人只有一个会出现在Set中。

最新更新