String数组的ArrayList

Joh*_*han 26 java arrays arraylist

我想做这样的事情:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.什么是最简单的方法来存储多个地址,每个地址有3个字段在一个数组中,而不为它创建一个单独的类?

Gru*_*eck 45

对3个字符串使用第二个ArrayList,而不是原始数组.IE浏览器.
private List<List<String>> addresses = new ArrayList<List<String>>();

然后你可以:

ArrayList<String> singleAddress = new ArrayList<String>();
singleAddress.add("17 Fake Street");
singleAddress.add("Phoney town");
singleAddress.add("Makebelieveland");

addresses.add(singleAddress);
Run Code Online (Sandbox Code Playgroud)

(我觉得这里有类型擦除可能会发生一些奇怪的事情,但我认为这不重要)

如果你已经开始使用原始数组,只需要进行一些微小的更改就可以让你的例子工作.如其他答案中所述,数组的大小不能包含在声明中.如此改变:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();
Run Code Online (Sandbox Code Playgroud)

private ArrayList<String[]> addresses = new ArrayList<String[]>();
Run Code Online (Sandbox Code Playgroud)

将工作.


Upu*_*ara 22

List<String[]> addresses = new ArrayList<String[]>();
String[] addressesArr  = new String[3];

addressesArr[0] = "zero";
addressesArr[1] = "one";
addressesArr[2] = "two";

addresses.add(addressesArr);
Run Code Online (Sandbox Code Playgroud)


cle*_*tus 10

我不会使用数组.由于多种原因,它们存在问题,无论如何都无法根据特定的数组大小声明它.尝试:

List<List<String>> addresses = new ArrayList<List<String>>();
Run Code Online (Sandbox Code Playgroud)

但老实说,对于地址,我会创建一个类来模拟它们.

如果您要使用数组,它将是:

List<String[]> addresses = new ArrayList<String[]>();
Run Code Online (Sandbox Code Playgroud)

即你不能声明数组的大小.

最后,不要在类似的实例(即for addresses)中将类型声明为具体类型.像我上面那样使用界面.这适用于成员变量,返回类型和参数类型.


Yas*_*ary 6

创建String的ArrayList的简单直接的方法

    List<String> category = Arrays.asList("everton", "liverpool", "swansea", "chelsea");
Run Code Online (Sandbox Code Playgroud)

干杯


bru*_*nde 5

您不能强制String数组具有特定大小.你可以这样做:

private List<String[]> addresses = new ArrayList<String[]>();
Run Code Online (Sandbox Code Playgroud)

但是可以将任何大小的数组添加到此列表中.

但是,正如其他人所提到的,这里正确的做法是创建一个表示地址的单独类.然后你会有类似的东西:

private List<Address> addresses = new ArrayList<Address>();
Run Code Online (Sandbox Code Playgroud)