0

マイペアクラス:

public class Pair<o,t> {

      private o one;
      private t two;

      public Pair(o one, t two) {
        this.one = one;
        this.two = two;
      }

      public o getO() { 
          return one;
      }

      public void setO(o one) {
          this.one = one;
      }

      public t getT() {
          return two;
      }

      public void setT(t two) {
          this.two= two;
      }
}

私のメイン アプリケーションでは、リストにペア オブジェクトを入力します。

List<Pair<Integer, String>> test = new ArrayList<Pair<Integer, String>>();
Pair<Integer, String> pair;

pair.setO(1);
pair.setT("A");
test.add(pair);

pair.setO(2);
pair.setT("B");
test.add(pair);

リストのインデックスだけで整数値を取得できるようにしたいです。A、Bなどを書き出すためのforループ。どうすればいいですか?Javaでそのようなことを行う簡単な方法はありますか?

4

3 に答える 3

1

インデックスで取得したい場合:

int i = ... ;
t theT = test.get(i).getT();
o theO = test.get(i).getO();

また、ちょっとしたアドバイス: 小文字で始まる名前は一般にオブジェクトであり、クラス/タイプではないため、ジェネリック型を常に大文字にすることで混乱が少なくなります。

于 2014-07-17T21:00:20.063 に答える
1

A、Bなどを書き出すためのforループ。どうすればいいですか?

コレクションの反復には For-Each ループを使用します。

for(Pair<Integer, String> pair : test ){
     System.out.println(pair.getT());
}
于 2014-07-17T20:42:18.687 に答える
1

@Braj が示唆したように、for-each ループを使用できます。

for(Pair<Integer, String> p : test ){
    System.out.println(p.getT());
}

ただし、オブジェクトを追加する方法により、実際の出力は次のようになります。

B
B

これは、オブジェクトを ArrayList に追加すると、実際にはそのオブジェクトへの参照が追加されるためです。したがって、オブジェクトを変更すると、ArrayList に格納されているものも変更されます。オブジェクトの別のコピーは作成されません! これを意図したとおりに機能させるには、新しい Pair オブジェクトを作成する必要があります。

別の注意: を初期化するためにコンストラクターを使用していないpairため、javac が怒鳴ります。

これらのエラーの両方を回避するには、コードを次のように変更します。

List<Pair<Integer, String>> test = new ArrayList<Pair<Integer, String>>();
test.add(new Pair<Integer, String>(1, "A"));
test.add(new Pair<Integer, String>(2, "B"));
for(Pair<Integer, String> p : test ){
    System.out.println(p.getT());
}
于 2014-07-17T20:58:40.537 に答える