0

この行でエラーが発生します

tm.put(temp[j],tm.get(temp[j]).add(i));

Eclipseでプログラムをコンパイルしていたとき:

The method put(String, ArrayList<Integer>) in the type TreeMap<String,ArrayList<Integer>> is not applicable for the arguments (String, boolean)

以下は私のコードです:

TreeMap<String, ArrayList<Integer>> tm=new TreeMap<String, ArrayList<Integer>>();
String[] temp=folders.split(" |,");
for (int j=1;j<temp.length;j++){

            if (!tm.containsKey(temp[j])){
                tm.put(temp[j], new ArrayList<Integer>(j));
            } else {
                tm.put(temp[j],tm.get(temp[j]).add(j));
            }
        }

フォルダはこのようなものです

folders="0 Jim,Cook,Edward";

前者のputメソッドではエラーが発生しないのに、2 番目のメソッドでのみエラーが発生するのはなぜだろうか。

4

4 に答える 4

3

ArrayList.add(E)を返しbooleanます。単純にそれらを連鎖させることはできません。

tm.get(temp[j]).add(j);十分です、もう一度する必要はありませんput

new ArrayList<Integer>(j)1つの要素の配列リストは提供されません。引数はinitialCapacityです。

tm次に、として宣言する必要がありますMap<String, List<Integer>>

Map<String, List<Integer>> tm=new TreeMap<String, List<Integer>>();
String[] temp=folders.split(" |,");
for (int j=1;j<temp.length;j++){

    if (!tm.containsKey(temp[j])){
        tm.put(temp[j], new ArrayList<Integer>());
    }
    tm.get(temp[j]).add(j); // This will change the arraylist in the map.

}
于 2012-06-07T02:49:05.757 に答える
0

ArrayList.add(E)は値を返すためboolean、単一のステートメント内に呼び出しを組み込むことはできません。

ArrayList<Integer>メソッドの2番目の引数としてオブジェクトを渡す必要がありますput

于 2012-06-07T02:48:56.110 に答える
0

ArrayList::addこのシナリオではtrueを返します; つまり、新しいArrayListは返されません。リストのクローンを作成し、リストに追加してから、引数として渡してみてください。

于 2012-06-07T02:48:56.687 に答える
0

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#add(E

public boolean add(E e)指定された要素をこのリストの最後に追加し、ブール値を返します。したがって、エラー。

于 2012-06-07T02:51:27.190 に答える