8

2つの列{int、String}を記録するリストを作成する必要があります。ArrayListは私が必要としているものだと思いますが、頭を悩ませることはできません。データベースから文字列を取得しました。intは、後で文字列の位置を特定するために必要なインデックス値です。

List<List<String>> strArray = ArrayList<List<String>>;

次に、データベースからプルする行ごとにstrArray.add()。add()のようなことを行うことができますか?

4

6 に答える 6

16

別のアプローチは、カスタムオブジェクトを作成することです。

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機能します。

于 2012-12-06T07:00:35.600 に答える
15

値が一意になる場合は、 HashMapwithintキーとString値を使用する必要があると思います。int

Map<Integer,String> myMap = new HashMap<Integer,String>();
myMap.put(1,"ABC");

MapコレクションやJavaコレクションは、のようなプリミティブを格納しないintため、オブジェクトを格納するため、値Integerにラッパークラスを使用する必要があることに注意してください。int

このリンクを参照してくださいJavaコレクションがプリミティブタイプを直接保存できないのはなぜですか?

于 2012-12-06T06:59:28.990 に答える
6

2つの値だけが必要な場合は、ネイティブのペアクラスを使用できます

List<Pair> mPairs = new ArrayList<Pair>();

Pair pair = new Pair(123,"your string");
mPairs.add(pair);

int値が一意でなく、HashMapを使用できない場合、これは適切な決定になります。

于 2012-12-06T07:01:49.147 に答える
1

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'にあります。

于 2012-12-06T07:28:26.753 に答える
0

intとstringをクラスでラップしてから、クラスオブジェクトをListに入れることができると思います。

于 2012-12-06T06:59:19.253 に答える
0

Mapは、キーを値にマップするオブジェクトです。マップに重複するキーを含めることはできません。各キーは最大で1つの値にマップできます。

値を指すインデックスがMap<Integer,String>どこにあるかを使用するとよいと思います。key(Integer)String

Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"str1");
map.put(2,"str2");
...
于 2012-12-06T06:59:27.537 に答える