将arrayList添加到2x2 arraylist

时间:2013-08-02 15:59:27

标签: java arrays 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)

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

非常感谢任何帮助

3 个答案:

答案 0 :(得分:4)

问题是add的{​​{1}}方法没有返回实例(相反的是ArrayList的{​​{1}}确实返回了实例)。

如果StringBuilder在执行append后发生了变化,则ArrayList.add方法将返回true

因此,您实际上是将Collection添加到add

相反,您可以使用:

boolean

此处有更多文档:

  • addressesAndCores add方法
  • ArrayList<String> toAdd = new ArrayList<String>(); toAdd.add(remoteIp.getText()); addressesAndCores.add(toAdd); add方法
  • ArrayList doc

答案 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]]