0

したがって、Java で HashMap を使用する必要があり、ランダムに選択された ArrayList から値を入力する必要があります。

私は ArrayList を適切に埋めており、私が持っているコードは ArrayList のサイズよりも小さい乱数 n を取り、そのランダム値を使用して ArrayList のスポットにアクセスし、それを HashMap に保存します。上記のように HashMap に追加するコードは次のとおりです。

hash.put(index, strArr.get(n));

ここで、hash は HashMap の名前、index は単なる int 値、strArr は項目を取得する文字列の ArrayList、n は乱数です。

これにより NullPointerException が発生し、私も CS の 3 人の友人もその理由を理解できません。助けてください、正しい方向への一歩は大歓迎です。

つまり、HashMap を初期化しなかったからです。今週初めに HashMaps の学習を始めたばかりのサイトをごちゃごちゃさせてすみません。:)

4

3 に答える 3

2

NullPointerExceptionは、初期化されていないオブジェクトを操作しようとしていることを意味します。これらは可能性です:

  1. ハッシュがnull
  2. strArrがnull
  3. n> = strArr size

    コードをデバッグし、何がnullで初期化されているかを確認します。
于 2013-03-15T06:23:17.840 に答える
1

ポイント 1: ハッシュマップを初期化していません。

ハッシュマップを初期化しておらず、要素をハッシュマップ内に配置しようとすると、間違いなく NPE が発生します。

ポイント 2: strArr が null です

同じことです。ここで、 N 番目の位置の要素にアクセスしようとすると、strArr間違いなく NPE が発生します。null

以下のコードが役立つ場合があります。

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

List<String> strList = new ArrayList<String>();

strList.add("Apple");
strList.add("Mango");

for(int i=0;i<strList.size();i++)
 {
   hashMap.put(i, strList.get(i));
 }
于 2013-03-15T06:37:16.510 に答える
0

ArrayListクラスのオブジェクトまたはクラスのオブジェクトを初期化しましたHashMapか?

 HashMap<Integer,ArrayList<Integer>> hash = new HashMap<Integer,ArrayList<Integer>>();
 ArrayList<Integer> array= new ArrayList<Integer>();
 array.add(30);
 hash.put(1, array);
于 2013-03-15T06:37:04.883 に答える