【发布时间】:2010-12-27 15:07:11
【问题描述】:
我想做这样的事情:
private ArrayList<String[]> addresses = new ArrayList<String[3]>();
这似乎不起作用。在不为其创建单独的类的情况下,在数组中存储多个地址(每个地址 3 个字段)的最简单方法是什么?
【问题讨论】:
我想做这样的事情:
private ArrayList<String[]> addresses = new ArrayList<String[3]>();
这似乎不起作用。在不为其创建单独的类的情况下,在数组中存储多个地址(每个地址 3 个字段)的最简单方法是什么?
【问题讨论】:
对 3 个字符串使用第二个 ArrayList,而不是原始数组。即。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);
(我认为这里的类型擦除可能会发生一些奇怪的事情,但我认为这不重要)
如果您对使用原始数组一无所知,只需稍作更改即可让您的示例正常工作。正如其他答案中所解释的,数组的大小不能包含在声明中。所以改变:
private ArrayList<String[]> addresses = new ArrayList<String[3]>();
到
private ArrayList<String[]> addresses = new ArrayList<String[]>();
会起作用的。
【讨论】:
我不会使用数组。由于几个原因,它们存在问题,并且无论如何您都不能根据特定的数组大小来声明它。试试:
List<List<String>> addresses = new ArrayList<List<String>>();
但老实说,对于地址,我会创建一个类来对其进行建模。
如果你要使用数组,那就是:
List<String[]> addresses = new ArrayList<String[]>();
即你不能声明数组的大小。
最后,不要在这样的实例中将你的类型声明为具体类型(即addresses)。使用我在上面所做的界面。这适用于成员变量、返回类型和参数类型。
【讨论】:
您不能强制字符串数组具有特定大小。 你可以这样做:
private List<String[]> addresses = new ArrayList<String[]>();
但可以将任意大小的数组添加到此列表中。
但是,正如其他人所提到的,正确的做法是创建一个单独的类来表示地址。然后你会有类似的东西:
private List<Address> addresses = new ArrayList<Address>();
【讨论】:
List<String[]> addresses = new ArrayList<String[]>();
String[] addressesArr = new String[3];
addressesArr[0] = "zero";
addressesArr[1] = "one";
addressesArr[2] = "two";
addresses.add(addressesArr);
【讨论】:
private List<String[]> addresses = new ArrayList<String[]>();
这肯定会起作用...
【讨论】:
试试这个
ArrayList<ArrayList<String>> PriceModelList = new ArrayList<>();
ArrayList<ArrayList<String>> PriceQtyList = new ArrayList<>();
ArrayList<ArrayList<String>> PriceTotalList = new ArrayList<>();
for (int i = 0; i < CustomerNames.length; i++) {
PriceModelList.add(new ArrayList<String>());
String[] PriceModel = {"s6", "s7", "note4", "note5", "j5", "j6"};
for (int j = 0; j < PriceModel.length; j++) {
PriceModelList.get(i).add(PriceModel[j]);
}
PriceQtyList.add(new ArrayList<String>());
String[] PriceQut = {"12", "13", "21", "15", "43", "21"};
for (int k = 0; k < PriceQut.length; k++) {
PriceQtyList.get(i).add(PriceQut[k]);
}
PriceTotalList.add(new ArrayList<String>());
String[] PriceTotal = {"1323", "1312321", "43123212", "43434", "12312", "43322"};
for (int m = 0; m < PriceTotal.length; m++) {
PriceTotalList.get(i).add(PriceTotal[m]);
}
}
ArrayList<ArrayList<ArrayList<String>>> CustomersShoppingLists = new ArrayList<>();
CustomersShoppingLists.add(PriceModelList);
CustomersShoppingLists.add(PriceQtyList);
CustomersShoppingLists.add(PriceTotalList);
【讨论】:
创建字符串数组列表的简单直接的方法
List<String> category = Arrays.asList("everton", "liverpool", "swansea", "chelsea");
干杯
【讨论】:
Java 8 中的以下作品..
List<String[]> addresses = new ArrayList<>();
【讨论】: