我写了这段代码,将arraylist添加到我的2x2 arraylist
ArrayList<ArrayList<String>> addressesAndCores = new ArrayList<ArrayList<String>>();
addressesAndCores.add((new ArrayList<String>().add(remoteIp.getText())));
addressesAndCores.add((new ArrayList<String>().add(remoteIp2.getText())));
然而Eclipse给了我错误:
The method add(ArrayList<String>) in the type ArrayList<ArrayList<String>> is not applicable for the arguments (boolean)
它建议将add添加到addall但是当我这样做时会抛出此错误:
The method addAll(Collection<? extends ArrayList<String>>) in the type ArrayList<ArrayList<String>> is not applicable for the arguments (boolean)
并建议我将其更改为添加...
非常感谢任何帮助
答案 0 :(得分:4)
问题是add
的{{1}}方法没有返回实例(相反的是ArrayList
的{{1}}确实返回了实例)。
如果StringBuilder
在执行append
后发生了变化,则ArrayList.add
方法将返回true
。
因此,您实际上是将Collection
添加到add
。
相反,您可以使用:
boolean
此处有更多文档:
答案 1 :(得分:0)
发生了什么事,
您创建了列表,然后您将此文本添加到此列表中
new ArrayList<String>().add(remoteIp.getText())
然后您将添加到主列表中此操作的结果,而不是列表,
并且当add()返回boolean
时,您的列表期望ArrayList<String>
您的类型不匹配
答案 2 :(得分:0)
你不能像其他几个人所指出的那样去做。
我建议您创建自己的构建器:
public class ExampleBuilder {
public static ExampleBuilder newTwoDListBuilder() {
return new ExampleBuilder();
}
private final List<List<String>> underlyingList = new ArrayList<>();
public ExampleBuilder() {
}
public ExampleBuilder add(final List<String> strings) {
underlyingList.add(strings);
return this;
}
public ExampleBuilder add(final String... strings) {
underlyingList.add(Arrays.asList(strings));
return this;
}
public List<List<String>> build() {
return new ArrayList<>(underlyingList);
}
}
然后你可以import static
然后像这样使用它:
public static void main(String[] args) throws Exception {
final List<List<String>> list = newTwoDListBuilder().add("ONE").add("TWO").build();
System.out.println(list);
}
输出
[[ONE], [TWO]]