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方法没有错误,而只有第二个。

4

4 回答 4

3

ArrayList.add(E)返回 a boolean,您根本无法将它们链接起来。

tm.get(temp[j]).add(j);就够了,不用再重复put了。

new ArrayList<Integer>(j)不会给你一个元素的arraylist,参数是initialCapacity。

然后,您应该声明tmMap<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>对象作为第二个参数传递给该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 回答