0

私はまだJavaに不慣れで、この問題に遭遇しました。

それぞれ数値の詳細を含む2つのデータ配列があります。

    static List<String> players1 = new ArrayList<String>(); 
    static List<String> players2 = new ArrayList<String>();
// Player 1 array plays player 2 array. List is always different on generation.

私がやりたいのは、whileループでこれらの文字列の両方を使用して、player1配列リスト([4]、[5]など)の各文字列を調べ、player2文字列([0]、[1]など)を取得して、プレーヤー1の次の文字列値に戻ります。これを行う最良の方法はイテレータを使用することだと私は思っていました。

   Iterator it = players1.iterator();
   (it.hasNext()) {
   //get array string  
    // ++1?? 
    Iterator p2 = players2.iterator(); 
    (p2.hasNext()) {

       //get array string id.
       //return to next p1 string value.
    }

したがって、player1配列から1つのIDを取得し、次にplayer2配列をループしてそこから1つのIDを取得すると、whileループでplayer1イテレーターの次の値に戻り、player2配列から次のIDを取得します...

私の質問は、これはこれを行うための良い方法ですか?または、アレイを段階的に循環できる簡単な方法はありますか。これを改善する方法や別の方法を使用する方法の例があれば、それは素晴らしいことです。

Javaホルダーに感謝します。

4

2 に答える 2

1

ここでイテレータを使用する必要はありません。代わりに、次のような拡張forループを使用してください。

for (String player1 : players1) {
    for (String player2 : players2) {
        System.out.println("player1 is: " + player1 + ", player2 is: " + player2);
    }
}
于 2013-03-21T15:50:16.940 に答える
0
Iterator<String> it1 = players1.iterator();
Iterator<String> it2 = players2.iterator();
while (it1.hasNext()&&it2.hasNext()) {
 String id1 = it1.next();
 String id2 = it2.next();
}

ループが終了した後

  • の場合it1.hasNext()players2より短かった。
  • の場合it2.hasNext()players1より短かった。
  • の場合!it1.hasNext()&&!it2.hasNext()、両方のリストのサイズは同じです。
于 2013-03-21T15:33:46.827 に答える