2つの列{int、String}を記録するリストを作成する必要があります。ArrayListは私が必要としているものだと思いますが、頭を悩ませることはできません。データベースから文字列を取得しました。intは、後で文字列の位置を特定するために必要なインデックス値です。
List<List<String>> strArray = ArrayList<List<String>>;
次に、データベースからプルする行ごとにstrArray.add()。add()のようなことを行うことができますか?
別のアプローチは、カスタムオブジェクトを作成することです。
Class CustomObject {
int value1;
String value2;
CustomObject(int v1, String v2) {
value1 = v1;
value2 = v2;
}
}
そしてそれを使用します:
List<CustomObject> myList = new ArrayList<CustomObject>();
CustomObject o1 = new CustomObject(1, "one");
myList.add(o1);
// etc.
int
値が一意であり、それらをキーと見なしたい場合は、他の人が提案したようにaがMap
機能します。
値が一意になる場合は、 HashMap
withint
キーとString
値を使用する必要があると思います。int
Map<Integer,String> myMap = new HashMap<Integer,String>();
myMap.put(1,"ABC");
Map
コレクションやJavaコレクションは、のようなプリミティブを格納しないint
ため、オブジェクトを格納するため、値Integer
にラッパークラスを使用する必要があることに注意してください。int
このリンクを参照してくださいJavaコレクションがプリミティブタイプを直接保存できないのはなぜですか?
2つの値だけが必要な場合は、ネイティブのペアクラスを使用できます
List<Pair> mPairs = new ArrayList<Pair>();
Pair pair = new Pair(123,"your string");
mPairs.add(pair);
int値が一意でなく、HashMapを使用できない場合、これは適切な決定になります。
IDが一意でない場合でも、マップを使用できます。
Map<Integer, String> map = new IdentityHashMap<Integer, String>();
map.put(new Integer(1), "string");
IdentityHashMap-オブジェクトごとにネイティブhashCode実装を使用するため、一意のIDは必要ありませんが、演算子「new」を使用してすべての整数を作成する必要があります。キャッシュメカニズムがあるため、オートボクシングは使用しないでください。
また、キャッシュサイズ'-XX:AutoBoxCacheMax='を制御するJVMパラメータもあります。ただし、このパラメーターを使用すると、キャッシュを無効にすることはできません。サイズをゼロに設定すると、キャッシュはそれを無視し、デフォルトを使用します。[-128; 127]。このパラメーターは整数専用であり、Longにはそのような種類のパラメーターはありません。
更新 また、一意でないキーについては、ある種のマルチマップを使用できます:マップ>マップ
そして、一意でないキーを使用して値を格納します。
map.put(1, new ArrayList<String>());
map.get(1).add("value1");
map.get(1).add("value2");
たとえば、HashMapを使用できます。
また、マルチマップの実装はgoogle-collections:'guava'にあります。
intとstringをクラスでラップしてから、クラスオブジェクトをListに入れることができると思います。
Mapは、キーを値にマップするオブジェクトです。マップに重複するキーを含めることはできません。各キーは最大で1つの値にマップできます。
値を指すインデックスがMap<Integer,String>
どこにあるかを使用するとよいと思います。key(Integer)
String
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"str1");
map.put(2,"str2");
...