14

対になった数値のセットをJavaに保存するにはどうすればよいですか? リストか配列か、それとも何か他のものを使用しますか?

例えば。[ (1,1) , (2,1) , (3,5)]

4

6 に答える 6

14

いくつかのオプションがあります:

カスタム IntPair クラスを作成する

class IntPair {
  // Ideally, name the class after whatever you're actually using 
  // the int pairs *for.*
  final int x;
  final int y;
  IntPair(int x, int y) {this.x=x;this.y=y;}
  // depending on your use case, equals? hashCode?  More methods?
}

IntPair[]次にまたはを作成しますList<IntPair>

または、2 次元配列を作成しnew int[n][2]、行をペアとして扱います。

PairJava にはいくつかの理由で組み込みクラスがありません、最も注目に値するのは、同じ機能を持つクラスを作成するのは簡単であるということです。その方法。

あなたがこれを実際に何に使用しているかについてもっと知っていれば、より詳細な提案を提供できるかもしれませんMap.

于 2012-04-19T18:35:15.993 に答える
0

低レベルの構造で暮らすことができ、「ペアのセット」の「リテラル」形式のコンパクトな形式がどうしても必要な場合-これは、フィクスチャのセットが必要なときに単体テストで発生します-単純に配列を使用できます配列:

int[][] squares = {
    { 1, 1 },
    { 2, 4 },
    { 3, 9 }
};

squares[0][1]ただし、そのような型にはセマンティックがないことに注意してください。すべては適切な使用に依存します。本当に必要なときに入力しても、コンパイラは警告を表示しませんsquares[1][0]

于 2012-04-19T18:38:19.427 に答える
0
class Pair<T> {
    T p1, p2;
    Pair(T p1, T p2) {
        this.p1 = p1;
        this.p2 = p2;
    }

Pair<Integer> pair = new Pair<Integer>(1,2);

int i1 = pair.p1;
int i2 = pair.p2;

getter、setter、equals、hashcode などを入れることもできます。

于 2012-04-19T18:34:00.773 に答える
0

重複を避ける必要がある場合は、HashSet が適切な選択ですが、そうでない場合は ArrayList が機能します。

Class IntPair(){
  int i;
  int j;
}
HashSet<IntPair> set = new HashSet<IntPair>();

また

ArrayList<IntPair> list = new ArrayList<IntPair>();
于 2012-04-19T18:50:03.250 に答える