我如何在java中表示一个空列表?

How do I represent an empty list in java?

本问题已经有最佳答案,请猛点这里访问。

我让这个类有一个以字符串和数组列表为参数的构造函数;

1
2
3
4
5
6
7
8
9
class Foo{
    String ide;
    ArrayList list;

    public TypeOperator(String ide, ArrayList list){
        this.ide = ide;
        this.list = list;
    }
}

所以当我像下面这样初始化类时:

1
Foo one = new Foo("boo", []);

它会产生错误。好吧,我可以这样做让它工作:

1
2
ArrayList empty = new ArrayList();
Foo one = new Foo("boo", empty);

第一个解决方案不起作用有什么原因吗?或者,是否有方法进行一些更改以使其生效?谢谢


要用Java表示一个空列表(ArayList是一个列表),我们使用EDCOX1(2)。

所以你可以用这样的方法:

埃多克斯1〔3〕

如果您需要其他方法来创建Java中的新列表,请参见此如何在Java中创建新列表的答案。

现在,您可能已经将数组与arraylist混合在一起,从而使用类似数组的语法[]来创建arraylist。但是,这也是语言规范的偏离标记,您可以阅读更多关于如何从这里创建数组,或者总是更好地使用标准Java文档。

而且,与您的问题无关,但您应该始终将代码编码到接口。


您的类Foo有一个错误的构造函数名,正确的应该是:

1
2
3
4
5
6
7
8
9
class Foo {
  String ide;
  ArrayList list;

  public Foo(String ide, ArrayList list){
    this.ide = ide;
    this.list = list;
  }
}

第一个解决方案是错误的,因为您没有将ArrayList的实例传递给构造函数。要创建空的arraylist,可以使用:

1
Foo one = new Foo("boo", new ArrayList());

您可以重写foo类以使用列表的泛型类型:

1
2
3
4
5
6
7
8
9
class Foo {
  String ide;
  List list;

  public Foo(String ide, List list){
    this.ide = ide;
    this.list = list;
  }
}

…并使用EDOCX1[1]表示空列表:

1
Foo one = new Foo("boo", Collections.EMPTY_LIST);


typeoperator函数定义需要arraylist类型的参数。该示例正在尝试传递空数组文本。

第一个解决方案不正确,因为ArrayList和[]之间的类型不匹配。

一个可能的解决方案是将函数定义更改为

1
2
3
4
    public TypeOperator(String ide, <some-type>[] list){
        this.ide = ide;
        this.list = new ArrayList(list);
    }

可以通过

1
    TypeOperator("somestring", new <some-type> [<some-dimension>]);