1

最初の列を文字列にし、2 番目の列をカスタム オブジェクトにする arraylist を開始しようとすると問題が発生します。

たとえば、 でcolumn [0]あり、です。またはによって使用されるような多次元配列リストを作成する慣例の試みはうまくいかないようです:(私はどんな助けも歓迎します。現時点では、それはJavaが許可するものではないと思います。オブジェクトですが、それは私が望むものではありません. ありがとう!Stringcolumn[1]Integerint[][]String[][]

4

4 に答える 4

2

配列リストが必要ですか? 必要なものは何でも作成できMap<String, Object>ますMap<String, Integer>..

于 2013-07-18T02:18:10.873 に答える
1

確かにそうですが、型チェックを弱体化/排除します:

Map myMap<String>, Integer> myData = new HashMap<String, Integer>();

これで、文字列のリストは で取得myMap.keySet()でき、値は で取得できますmyMap.values()。これらはそれぞれSetを返します。これは、次のコードを使用して簡単にListに変換できます。

List<String> strings = new ArrayList<String>(myMap.keySet()); // get your strings
List<Integer> numbers = new ArrayList<Integer>(myMap.values(); // get your numbers

頑張ってください。問題が発生した場合は、コメントを残してください。

于 2013-07-18T02:19:36.633 に答える
1

配列は、特定の 1 つのタイプのもの(それらObjectまたはStringまたは) を対象としていintます。それらに複数のディメンションを追加しているという事実にもかかわらず、それらはまだ 1 種類の情報しか保持していません。

むしろ必要なのは、2 つのオブジェクト間のマッピングです。これにより、次のことが可能になります。

  • 任意のキーを特定の値に関連付けます
  • 重複するキー エントリを削除する
  • 配列のインデックス付けよりもはるかに簡単にアクセスできます

これが例です。カスタム オブジェクトがCatで、所有者の名前を特定の にマップするとしますCatMapの新しいインスタンスを作成します。

Map<String, Cat> catOwners = new HashMap<>();

その後、要素を入れることができます...

catOwners.put("Jamie", new Cat("Tycho"));

...そして比較的簡単にそれらを取得します。

Cat currentCat = catOwners.get("Jamie"); // gets Jamie's cat

本当にやりたい場合は、すべての sMap.Entryで提供されるオブジェクトを使用して、それらを反復処理することもできます。Map

for(Map.Entry<String, Cat> element : catOwners.entrySet()) {
    System.out.println(element.getKey()
        + " owns " + element.getValue().getName());
}
于 2013-07-18T02:27:31.767 に答える
0

できることは、ジェネリックObject型を使用し、それに応じてキャストすることです。

于 2013-07-18T02:18:39.987 に答える