字符串数组的ArrayList

问题描述 投票:0回答:9

我想做这样的事情:

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

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

java arrays arraylist
9个回答
49
投票

对 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[]>();

会起作用的。


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

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

addresses.add(addressesArr);

10
投票

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

List<List<String>> addresses = new ArrayList<List<String>>();

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

如果你要使用数组,那就是:

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

即你无法声明数组的大小。

最后,不要在这样的实例中将类型声明为具体类型(即

addresses
)。按照我上面所做的那样使用该界面。这适用于成员变量、返回类型和参数类型。


7
投票

创建 String ArrayList 的简单直接方法

    List<String> category = Arrays.asList("everton", "liverpool", "swansea", "chelsea");

干杯


5
投票

您不能强制字符串数组具有特定的大小。 你可以这样做:

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

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

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

private List<Address> addresses = new ArrayList<Address>();

1
投票
private List<String[]> addresses = new ArrayList<String[]>();

这肯定会起作用...


1
投票

试试这个

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);

0
投票

以下作品在 Java 8 中..

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

0
投票
java 8 中的

List必然会导致内存泄漏。 从 java 11 开始,对 String 类进行了改进以避免这种情况。 建议使用List

解决这个问题的最好方法是使用

private List<List<String>> addresses = new ArrayList<List<String>>();
© www.soinside.com 2019 - 2024. All rights reserved.