0

私は を宣言しましたArrayList a = [1,2,3]ArrayLList b以下のループを使用して別のものを作成しました。

for(int i = 0; i<a.size(); i++)
{
      for(int j=i+1; j<a.size();j++)
      {
              b.add("{" + a.get(i)+ "," + a.get(j) + "}");
      }
}

これで、ArrayList b要素が含まれます[{1,2},{1,3},{2,3}]。を使用してステートメントをSystem.out.println(b.get(0))出力すると、出力は になります{1,2}

1ここで、抽出して2個別にできるように、配列をさらに調査したいと思います。どうすればこれを達成できますか?

4

4 に答える 4

1

クラスペアを作成

class Pair{
String a 
String b
....
///setters and getters
} 

今度は b にしましょう。List<Pair>代わりに呼び出しb.add("{" + a.get(i)+ "," + a.get(j) + "}");を簡単b.add(new Pair(a.get(i),a.get(j)); に行うことができ、文字列の分割などで遊ぶ必要はありません。ieb.get(0).getA()またはを実行することで、値に簡単にアクセスできます。b.get(0).get()

メソッドをペアで文字列にオーバーライドすることもできます

public String toString() {

    return "{" + a+ "," + b + "}";
}

そのため、これを行うSystem.out.println(a.get(0))と、以前とまったく同じ出力が得られます

***コメントで言うように、2つ以上の要素のグループが必要な場合は編集して、少し異なるクラスを構築できます

class MyClass{ 
List<Integer> fields = new ArrayList<Integer>();
//two constructors
MyClass(int singleVal)
{
fields.add(singleVal);
}


MyClass(MyClass a, MyClass b)
{
fields.addAll(a.fields);
fields.addAll(b.fields);
}
//getters setters depends what you need


}

リストは両方とも MyClass のリストになります。リスト a にデータを入力するときは、最初のコンストラクターを使用してオブジェクトを作成します。要素を b リストに追加する場合は、実行できますが、またはb.add(new MyClass(a.(i),a.(j)))実行することもできます。b.add(new MyClass(a.(i),b.(j)))b.add(new MyClass(b.(i),b.(j)))

于 2013-06-14T08:15:34.597 に答える
0

あなたの配列bは文字列だけを保持していることを理解しています。これを実現するには、任意の文字列トークン化メカニズム( String.splitまたはStringTokenizer ) を使用します。

ヒント: StringTokenizer のパフォーマンスが向上

于 2013-06-14T08:08:44.177 に答える
-1
String ele = b.get(0);
ele = ele.replace("{", "");
ele = ele.replace("}", "");
StringTokenizer tokens = new StringTokenizer(ele, ",");
while(tokens.hasMoreTokens()) {

    int val = Integer.parseInt(tokens.nextToken());
}
于 2013-06-14T08:10:32.507 に答える