我在这一行收到错误
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 方法没有错误,但仅限于第二个。
答案 0 :(得分:3)
ArrayList.add(E)
会返回boolean
,您根本无法将它们链接起来。
tm.get(temp[j]).add(j);
就足够了,您不需要再次put
。
new ArrayList<Integer>(j)
不会给你一个元素的arraylist,参数是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.
}
答案 1 :(得分:0)
ArrayList.add(E)
返回boolean
值,因此,您无法将调用合并到一个语句中。
您需要将ArrayList<Integer>
对象作为第二个参数传递给put
方法。
答案 2 :(得分:0)
ArrayList::add
returns true in this scenario;也就是说,它不会返回新的ArrayList。尝试克隆列表,添加它,然后将其作为参数传递。
答案 3 :(得分:0)
http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#add(E)
public boolean add(E e) 将指定的元素追加到此列表的末尾并返回一个布尔值。因此,错误。