我正在尝试将mainList
arraylist分成3个子列表Arraylist,然后将其作为子列表添加到其他arraylist mainSublist
中,但我收到此错误:
我该如何解决?
我感谢任何帮助。
1) - 类型不匹配:无法从List转换为ArrayList
2) - ArrayList类型中的方法add(RootCreator)不适用于参数(ArrayList)
代码:
ArrayList<RootCreator> mainList = new ArrayList<RootCreator>();
for (String key : names) {
RootCreator rootcreat = join_line(path, key);
mainList.add(rootcreat);
}
ArrayList<RootCreator> mainSublist = new ArrayList<RootCreator>();
for(int i= 0 ; i < mainList.size(); i++){
int index = i*3;
//the error 1 is here
ArrayList<RootCreator> sublist = mainList.subList(0, index);
//error 2 is here
mainSublist.add(sublist);
}
答案 0 :(得分:1)
所有列表都不是ArrayList,因此当您使用子列表时,您将获得一个通用列表。另一方面,将集合添加到另一个集合的方法是addAll而不是添加。
List<RootCreator> mainList = new ArrayList<RootCreator>();
for (String key : names) {
RootCreator rootcreat = join_line(path, key);
mainList.add(rootcreat);
}
List<RootCreator> mainSublist = new ArrayList<RootCreator>();
for(int i= 0 ; i < mainList.size(); i++){
int index = i*3;
//the error 1 is here
List<RootCreator> sublist = mainList.subList(0, index);
//error 2 is here
mainSublist.addAll(sublist);
}
答案 1 :(得分:0)
subList
方法返回List
,而不是ArrayList
,并且您无法将List
分配给ArrayList
。事实上,List
方法返回的subList
不是ArrayList
。
如果需要ArrayList
,请在子列表中创建ArrayList
。
ArrayList<RootCreator> sublist = new ArrayList<>(mainList.subList(0, index));
如果您只需要List
,请改为sublist
List
。
List<RootCreator> sublist = mainList.subList(0, index);
您无法向ArrayList<RootCreator>
添加ArrayList<RootCreator>
;您必须添加RootCreator
。如果您要将sublist
的元素添加到其他列表,请使用addAll
方法。
mainSublist.addAll(sublist);
答案 2 :(得分:0)
好的,我们来看看这两个错误:
//the error 1 is here
ArrayList<RootCreator> sublist = mainList.subList(0, index);
这告诉您,您正在尝试将类型为List
的内容分配给声明为ArrayList
的变量。虽然ArrayList
是List
的子类型,但它不能同时发挥作用 - 您可以将ArrayList
分配给List
,但反之亦然。所以让我们改变你的声明:
//the error 1 was here, but fixed.
List<RootCreator> sublist = mainList.subList(0, index);
第二个略有不同:
//error 2 is here
mainSublist.add(sublist);
在这里,您已经定义了一个列表来保存RootCreator
类型的项目 - 但是您没有添加RootCreator
个项目,而是添加了一个列表。因此,如果您想要列出 hold 其他列表,则需要在创建时指定:
ArrayList<List<RootCreator>> mainSublist = new ArrayList<List<RootCreator>>();
但是,如果您只是想保留一个列表并希望添加子列表中的所有内容,那么请将代码更改为:
//error 2 was here, but Fixed
mainSublist.addAll(sublist);