2016-06-25 9 views
-3

たとえば、 int a = 1; int b = 2;私は私のArrayListのインデックスに両方の値を追加し、それらを読むことができるようにするにはどうすればよい。(私がリストの同じクラスでこれを実行する必要があります)インデックスごとに複数のintを持つJavaのArrayList

例えば擬似コードで

私はできる必要があります

Arraylist<integer> mylist = new Arraylist<integer> ; 

int c = mylist.getnode(1).a //gets the value of a in node 1 
int d = mylist.getnode(1).b //gets the value of b in node 1 
+1

2D配列が好きですか? –

+0

あなたの質問は明確ではない、あなたはまだクラウドに住んでいる、あなたは落ち着くことができ、あなたが望むものを特定して例を挙げることができますか? –

+0

もし1D配列でそれが欲しいのであれば。私は 例擬似コード c = mylist.getnode(1).a(最初のノードのaの値をc) d = mylist.getnode(1).b – Syarx

答えて

2

aとbを含むクラスを作成します。次に、そのクラスのインスタンスを含むリストを作成します。

class Tuple { 
public int a, b; 
} 
ArrayList<Tuple> mylist = new ArrayList<>(); 
int a = mylist.get(0).a; 
+0

で同じクラスでこれを行うことができるようにしたい別のクラスからそれを取るにしたくないです。私はそれを追加するmylist.add(0).a; ?? – Syarx

+1

'Set'はこのクラスの悪い名前です。まず、これは[set](https://en.wikipedia.org/wiki/Set_%28abstract_data_type%29)ではありません。次に、その名前の[Javaクラス](http://docs.oracle.com/javase/7/docs/api/java/util/Set.html)がすでにあります。 'Tuple'や' Pair'はどうですか? –

+0

1)クラスセットに名前を付けないでください。 2)何も説明せずに答えをコードするだけではありません。 –

0

これは少し非効率的であるとlist.size()で囲まれている変数indexのための制限がありますが、ここで、あなたは自分の価値観にアクセスすることができます今

ArrayList<HashMap> list = new ArrayList<HashMap>(); 
//index is where you want to place your element 
if(list.size() > index){ 
    list.get(index).put(key, value); # in your case key = a, value = 1 
}else if(list.size() == index){ 
    list.add(new HashMap<String,Integer>()); 
    list.get(index).put(key, value); # in your case key = a, value = 1 
}else { 
    System.out.println("Index out of bounds"); 
} 

を行く:

list.get(<some index>).get(<some_key); 
#i.e list.get(1).get("a"); 

注:上記のコードを使用すると、list.size() - 1の範囲外のランダムインデックスにアクセスすることはできません。 index変数は、これを行うための[最大list.size()

最良の方法は、abのための変数を持つ独自のクラスを作成することであることができます。次にlist = ArrayList<YourClass>();を作成します。それははるかにクリーンです

理由私は、HashMapが設定されたサイズを持たずに初期化するときに、単純にHashMapを作成することを覚えているので、それはサイズを2倍にします。必要な要素の数が分かっている場合は、その数に初期化することができます。

関連する問題