0

我编写了这段代码来将 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)

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

任何帮助将不胜感激

4

3 回答 3

4

问题是'sadd方法ArrayList不返回实例(相反的是StringBuilder's append,它确实返回了实例)。

如果在执行后发生了变化,该方法ArrayList.add将返回。trueCollectionadd

因此,您实际上是在boolean添加addressesAndCores.

相反,您可以使用:

ArrayList<String> toAdd = new ArrayList<String>();
toAdd.add(remoteIp.getText());
addressesAndCores.add(toAdd);

更多文档在这里:

于 2013-08-02T16:02:09.903 回答
0

发生了什么,

你创建了你的列表,然后你将你的文本添加到这个列表中,然后你将 new ArrayList<String>().add(remoteIp.getText())这个操作的结果添加到你的主列表中,而不是你的列表,

并且随着 add() 返回boolean并且您的列表期望ArrayList<String>您有类型不匹配

于 2013-08-02T16:05:48.833 回答
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]]
于 2013-08-02T16:25:34.003 回答