我有一个Player的ArrayList。该阵列目前在首先登录到最近登录的玩家中进行排序。
但是,我想从播放器位置排序ArrayList,从高到低。该位置存储在Player类中,由
检索player.getX();
我想我应该有一个循环,每个项目都被添加到一个新的ArrayList中,但我无法弄清楚如何实际实现它。
我该怎么做?
循环:
for (int i = 0; i < otherPlayers.size(); i++) {
Player currentPlayer = otherPlayers.get(i);
}
编辑:添加循环示例
答案 0 :(得分:5)
您可以让玩家实施Comparable
并使用Collections.sort(players)
,也可以直接创建这样的比较器
Collections.sort(players, new Comparator<Player>() {
public int compare(Player o1, Player o2) {
return o2.getX().compareTo(o1.getX());
}
});
假设player.getX()
返回Integer
修改强>
假设您的List<Player>
名为otherPlayers
,如果您想直接对其进行排序而不编写循环和排序算法,则可以依赖Java内置方法{{1对它进行排序。但这意味着您的类Collections.sort()
实现了Person
接口,或者您可以将Comparable
的实例作为Comparator
方法的第二个参数传递,如上所述。 / p>
Collections.sort()
方法接受两个对象,并返回一个整数,表示第一个参数是否低于第二个,等于或大于。这就是排序算法如何知道如何排序列表中的元素。因此,通过创建一个Comparator.compare()
实例来比较两个Comparator
实例(列表中的元素)的Player.getX()
的结果,您可以将位置条件上的原始列表排序为你问过它。
答案 1 :(得分:1)
使用Collections#sort
对其进行排序。
List<Player> players = new ArrayList<Player>();
Collections.sort(players, new Comparator<Player>(){
public int compare(Player p1, Player p2){
return p1.getX().compareTo(p2.getX());
}
});
答案 2 :(得分:0)
玩家应该实施Comparable<Player>
然后你必须在Player类中实现compareTo方法。
使用Collections.sort(listOfPlayers);
http://www.vogella.com/blog/2009/08/04/collections-sort-java/
答案 3 :(得分:0)
让玩家实施
Comparable
然后实施
compareTo()
方法并按职位进行比较。 然后你可以通过
进行排序Collections.sort(yourList);
或
Collections.sort(yourList, Collections.reverseOrder());
答案 4 :(得分:0)
尝试Collections.sort(List, Comparator)