• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ArrayListとHashMapを利用する問題について)

ArrayListとHashMapを利用する問題について

このQ&Aのポイント
  • ArrayListとHashMapを利用する問題について質問します。自分で書いたプログラムでは、(3)まで正しく実装できたが、(4)で値がnullとなってしまう。特に「ArrayListより、HashMapを取得する。」という部分の記述方法がわからない。
  • (3)までは自力で実装し、実行結果も正しくなったが、(4)の記述方法がわからず、値がnullとなってしまう。どのようにすれば値が正しく格納されるのか教えてほしい。
  • 質問:ArrayListとHashMapを利用する問題について 実際に動かしてみると値がnullとなってしまう。特に「ArrayListより、HashMapを取得する。」という部分がわからないので、詳しい方は教えてほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

以下のコードを参考にしてみてください。 ------------------------------------------------------------ import java.util.*; import java.io.*; class Sample_Map { public static void main(String[] args) throws IOException { ArrayList list = new ArrayList(); System.out.println("何回で入力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); for (int i = 0; i < num; i++) { HashMap map = new HashMap(); System.out.println("名前を入力して下さい。"); String name = br.readLine(); System.out.println("年齢を入力して下さい。"); String age = br.readLine(); System.out.println("性別を入力して下さい。"); String sex = br.readLine(); map.put("名前", name); map.put("年齢", age); map.put("性別", sex); list.add(map); } for (int i = 0; i < list.size(); i++) { HashMap map = new HashMap(); map = (HashMap)list.get(i); String name = (String) map.get("名前"); String age = (String) map.get("年齢"); String sex = (String) map.get("性別"); System.out.println("名前=" + name); System.out.println("年齢=" + age); System.out.println("性別=" + sex); } } }

j-dean
質問者

補足

なるほど!!と思いきや・・・ 実行してみたら ClassCastExceptionのエラーが出てしまいました。 上記の説明通りmap = (HashMap)list.get(i);と 記述したからちゃんとキャストされてるはずなんですけど。 何がいけないんだろ? と、またまた思いきや 初めのfor文の最後の記述をlist.add(map)と直してみたら ちゃんと実行されました。 でもなぜmapにしなきゃいけないんでしょう? list.add(name); list.add(age); list.add(sex); ではダメなんでしょうか?

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

ArrayList は、コレクションクラスといって、オブジェクトを集めたものです。 名前・年齢・性別を次々と追加していくと後で取り出すときに大変使いづらいものになります。 今回のlistには、人物mapだけを登録すれば分かりやすいし、 処理も簡単になるわけです。 この辺りは少しずつ経験を繰り返しながら身に着けていくことになると思います。 今回の一つの間違いは、 HashMap map = new HashMap(); String name = (String)map.get("名前"); String age = (String)map.get("年齢"); String sex = (String)map.get("性別"); と、map が空っぽのままつかっているので、nullが出てくるわけです。

関連するQ&A