[英]Adding arrayList to 2x2 arraylist
我写了这段代码将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)
并建议我将其更改为添加...
任何帮助将不胜感激
问题是ArrayList
的add
方法不会返回实例(相反, StringBuilder
的append
会返回实例)。
如果Collection
在执行add
之后发生了更改,则ArrayList.add
方法将返回true
。
因此,您实际上是将boolean
添加到addressesAndCores
。
相反,您可以使用:
ArrayList<String> toAdd = new ArrayList<String>();
toAdd.add(remoteIp.getText());
addressesAndCores.add(toAdd);
此处有更多文档:
发生了什么,
创建了列表,然后将文本new ArrayList<String>().add(remoteIp.getText())
添加到此列表中,然后将此操作的结果添加到主列表中,而不是列表,
并且当add()返回boolean
并且您的列表期望ArrayList<String>
您的类型不匹配
正如其他几个人指出的那样,您不能这样做。
我建议您创建自己的生成器:
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]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.