2016-04-03 20 views
-1

私のJavaコードに問題があり、誰かが私を助けてくれることを願っています。リストに値を追加する<Map <String、String >>

List<Map<String, String>>のリストに値を追加する際に助けが必要です。

私はmyList.add(map.put(value1, value2))で試してみますが、それは間違っています。

List<Map<String, String>> myList = null; 
Map<String, String> map = null; 

for (int i=0; i<daysList.getLenght(); i++) 
{ 
    myList.add(map.put(value1, value2)); //This line is not working 
} 
+0

あなたはあなたのリストを初期化する必要がありますし、マップの代わりにAbstractMap.SimpleEntryなどを適切に使用してください。 – zyexal

答えて

2

Map#put方法は、キーのマッピングがなかった場合には、以前のキーに関連付けられた値、またはNULLを返し、マップを返しません。

あなたがリストにマップを追加したい場合は、あなたがこのような何かをする必要があります

for (int i=0; i<daysList.getLength(); i++){ 
    Map<String, String> map = new HashMap<String,String>(); 
    map.put(value1, value2); 
    myList.add(map); 
} 

以下のようにあなたは、コードを変更する必要が

map.put(value1, value2); 
myList.add(map); 
+1

ありがとう!あなたが私に正しい答えを与える最初の人だったので、私はあなたの答えを受け入れました。 – user2939293

1

方法put()からMap.javaはkeyに関連付けられた以前の値を返します。キーのマッピングがない場合はnullを返します。Map.javaは

を返します。

(nullの戻り値の実装がnull値をサポートしている場合にも、マップが以前キーにnullを関連付けられていたことを示すことができます。)

あなたのリストがMapオブジェクトを必要としますが、あなたがあるキーに関連付けられた以前の値を提供していますタイプマップではありません。

1

あなたはそうすることはできません。 あなたがリストに配置するMapインターフェース(例えば、HashMap<>)を実装したクラスのインスタンスを作成する必要があること

List<Map<String, String>> myList = null; 
Map<String, String> map = null; 

for (int i=0; i<daysList.getLenght(); i++) 
{ 

    map.put(value1, value2) //map is null so this line will throw NullPointerException 
    myList.add(map); //Also mylist is null if you fix map null problem another NullPointerException is thrown here 
} 
+0

*「もう1つのNullPointerExceptionがスローされます」* ...まあ、実際はそうではありません; Pは既に例外が存在していたので、そこでメソッドが終了します。 – Tom

+0

@Tom誰もが、私が「最初の行を修正した後、2番目の問題はここから来る」ということを知っています。私は編集し、答えを説明しようとした;) –

1

のようにいろいろ書いてみてください:

for (int i = 0; i < daysList.getLenght(); i++) { 
    Map<String, String> map = new HashMap<>(); 
    map.put(value1, value2) 
    myList.add(map); 
} 
関連する問題