0

Player(s) の ArrayList があります。配列は現在、最初にログオンしたプレイヤーから最新のプレイヤーへと並べられています。

ただし、ArrayList を Players の位置から高い順に並べ替えたいと考えています。位置は Player クラスに格納され、

player.getX();

各項目が新しい ArrayList に追加されるループが必要だと思いますが、実際にそれを実装する方法がわかりません。

これどうやってするの?

ループ:

for (int i = 0; i < otherPlayers.size(); i++) {
    Player currentPlayer = otherPlayers.get(i);
}

編集:ループの例を追加

4

5 に答える 5

5

Playerを実装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の組み込みメソッドCollections.sort()を使用して並べ替えることができます。ただし、これは、クラスがインターフェイスをPerson実装するか、上記のようにメソッドの2番目の引数としてのComparableインスタンスを渡すことができることを意味します。ComparatorCollections.sort()

このComparator.compare()メソッドは2つのオブジェクトを受け取り、最初の引数が2番目の引数よりも小さいか、等しいか、またはそれ以上であるかを示す整数を返します。これは、並べ替えアルゴリズムがリスト内の要素を並べ替える方法を知る方法です。したがって、2つのインスタンス(リストの要素)Comparatorの結果を比較するインスタンスを作成することにより、元のリストを要求どおりの位置基準で並べ替えることができます。Player.getX()Player

于 2012-12-04T09:58:53.260 に答える
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());
                    }
                 });
于 2012-12-04T10:00:19.657 に答える
0

プレイヤーは実装する必要がありますComparable<Player>

次に、PlayerクラスにcompareToメソッドを実装する必要があります。その後、を使用して並べ替えますCollections.sort(listOfPlayers);

http://www.vogella.com/blog/2009/08/04/collections-sort-java/

于 2012-12-04T09:57:42.477 に答える
0

Player に実装させる

Comparable

次に実装

compareTo() 

方法と位置による比較を行います。次に、次の方法で並べ替えることができます

Collections.sort(yourList);

また

Collections.sort(yourList, Collections.reverseOrder());
于 2012-12-04T09:59:32.930 に答える
0

試すCollections.sort(List, Comparator)

于 2012-12-04T10:02:24.863 に答える