0

LinkedHashMap の配列を実装しようとしていますが、可能かどうかわかりません...

現時点では、私のコードは次のようになります。

public class LHMap {

    public static void main(String[] args) {

     LinkedHashMap<String, Integer>[] map = null;

  for (int i = 0; i < 5; i++) {
         map[i] = new LinkedHashMap<String, Integer>();
  }

  map[0].put("a", 0);
  System.out.println(map[0].get("a"));

 }
}


System.out.println(extracted(map)[0].get("a"));
「NullPointerException」を返します...

これを実装する方法はありますか?

編集:1.抽出された()を消去、2.テーブル->配列

4

2 に答える 2

2

extracted()あなたの方法が何をしようとしているのかわかりません。NullPointerExceptionに渡してすぐに返すのでmapextracted取得しています。あなたの例では、渡してnullから返しています。null 配列で i番目の添字 (または任意の添字) を見つけることはできません。

の配列の代わりにLinkedHashMapList機能しますか?

List<Map<String, Integer>> listOfMaps = new ArrayList<Map<String, Integer>>();

for(int i = 0; i < 5; i++) {
   listOfMaps.add(new LinkedHashMap<String, Integer>());
}

listOfMaps.get(0).put("a", 0);
System.out.println(listOfMaps.get(0).get("a"));

編集

ちなみに、ジェネリックを使用して配列をインスタンス化することはできません。タイプセーフが必要な場合は、リストを使用することをお勧めします。それ以外の場合は、次のようにする必要があります。

LinkedHashMap<String, Integer>[] map = new LinkedHashMap[5];

ただし、これにより警告が表示されます。

于 2010-11-08T23:02:21.823 に答える
0
map[i] = new LinkedHashMap<String, Integer>();

マップを初期化しないか、明示的に NULL に初期化するため、NPE が発生します。

LinkedHashMap<String, Integer>[] map = null;

編集:

たとえば、配列をインスタンス化する必要があります。

map = (LinkedHashMap<String, Integer>[]) new LinkedHashMap[5];

そのコードで「未チェックの変換」警告が表示されますが。また、一般的な配列作成の問題については、これを確認してください (指摘してくれた人に感謝します)。

于 2010-11-08T23:07:46.923 に答える