繁体   English   中英

将arrayList添加到2x2 arraylist

[英]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)

并建议我将其更改为添加...

任何帮助将不胜感激

问题是ArrayListadd方法不会返回实例(相反, StringBuilderappend会返回实例)。

如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM