-1

私はクラス Player を持っています

public Player (String name, int num) {
    name = name;
    num= num;
}

//ゲッターとセッター

次に、プレーヤーのリストを取得します

List<Player> listPlayers = new ArrayList<Player>(); 

番号を指定してプレーヤー名を返すメソッドを作成する必要があります

String getPlayerName(int num){
    ...
}

すべてのリストを表示するメソッドを作成できますが、これをより効率的な方法で行いたいと考えています。誰かが私にいくつかのヒントを教えてもらえますか?

助けてくれてありがとう。

4

6 に答える 6

3

a を使用して、Map<Integer, Player>すべてのプレーヤーを格納します。マップからプレーヤーを取得するnumことは非常に効率的です。

map.get(num);
于 2012-07-19T10:48:47.900 に答える
1

リストしか取得していない場合は、リストを繰り返し処理し、正しい番号のプレーヤーを見つけて名前を返すよりも効率的な方法はありません。

メソッドを次のように変更したくなるでしょう

public Player getPlayerByNumber(int num)

ただし、後で発信者に名前を取得させます。後で他の値を取得したい場合は、より柔軟です。

Map<Integer, Player>データ構造を変更したい場合は、リストの代わりに a を使用できます。a のようなものを使用するHashMapと、効率的なアクセスが可能になります。挿入順序を維持する必要LinkedHashMapがある場合は、 を使用する必要がありますが、必須ではない場合があります。

于 2012-07-19T10:48:42.837 に答える
0

プレーヤーの番号に基づいてプレーヤーを返そうとしている場合、「正しい」データ構造は Map であり、playerMap.get(playerNumber) を使用してその番号に対応するプレーヤーを取得します。

于 2012-07-19T10:49:10.713 に答える
0
String getPlayerName(int num) {

for(Player player:listPlayers) {
    if(player.getNum() == num) {
    return player.getName();
    }
}
return null;
}
于 2012-07-19T10:50:25.317 に答える
0

これを試して..

public String getPlayerName(int num){

   for (Player p : listPlayers){

           if (p.getNum()==num){

              return p.getName();
              break();
             }


    }

           return null;

}

より良いアプローチには、Map などの Collection を使用します

于 2012-07-19T10:50:34.413 に答える
0

の代わりに を使用すると、以下を使用して Player にアクセスArrayList<Player>できMap<Integer, Player>ますnum

Map<Integer, Player> listPlayerList = new HashMap<Integer, Player>();

// fill in your players with the following line
listPlayerList.add(player.getNum(), player);

// remove a player
listPlayer.remove(player.getNum();

// get player with specific num
Player p = listPlayer.get(num);
String name = p.getName();

// iterate over players
for (Player p: listPlayer.values()) {
  doStuffWith(p);
}

ArrayListを に変更できない場合は、運が悪く、すべてのエントリのMapを繰り返しArrayListチェックする必要があります。num

于 2012-07-19T10:54:35.607 に答える