【发布时间】:2015-11-30 19:59:40
【问题描述】:
我在排序列表时遇到了奇怪的问题。
起初,我有一个自定义类
private List<Player> players;
因此,玩家中有一些物品,例如 2 -“玩家 1”和“玩家 2”。
基本上是Player类:
public class Player {
private String name;
private int points = 0;
}
我有一个用于对玩家进行排序(比较分数)的功能:
public String getActualRanking() {
for(int z = 0; z < players.size(); z++) {
Log.d("COLSORT", players.get(z).getName());
}
String message = "";
List<Player> temp = players;
Collections.sort(temp, new Comparator<Player>() {
@Override
public int compare(Player player, Player t1) {
return Integer.valueOf(t1.getPoints()).compareTo(player.getPoints());
}
});
for(int i = 0; i < temp.size(); i++) {
message += Integer.toString(temp.get(i).getPoints()) + " pkt - " + temp.get(i).getName() + "\n";
}
for(int z = 0; z < players.size(); z++) {
Log.d("COLSORT", players.get(z).getName());
}
return message;
}
为什么有 2 个 Log.d?因为第一个日志是:
D/COLSORT﹕ Player 1
D/COLSORT﹕ Player 2
但第二个是:
D/COLSORT﹕ Player 2
D/COLSORT﹕ Player 1
问题是:为什么?如果我创建了要排序的“临时”列表并且此函数中不再使用“玩家”,为什么 Collections.sort 会对“玩家”列表进行排序?我真的不明白这种行为:/
【问题讨论】:
标签: java android sorting collections