我想创建一个包含值和名称的列表。该值是玩家获得的两位小数的百分比(例如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
中。