Java 2d Array还是2d ArrayList?

时间:2014-08-04 18:42:12

标签: java arrays arraylist multidimensional-array

我的任务是创建一个与多值数据库连接的程序。我在一个字符串中收到整个记录,其中包含值和子值的分隔符。从那里我将数据拆分为二维数组。这是一个片段(注意不同的长度):

        0           1           2
   +------------------------------------+
0  | 442        |           |           |
1  | C          |           |           |
2  |            |           |           |
3  | N          |           |           |
4  | LAND       |           |           |
5  | 05412300   | 05412307  |           |
6  | BEARING    |           |           |
7  | BRAND1     | BRAND2    | BRAND3    |
8  | 12         |           |           |
   +------------------------------------+

现在我总是使用ArrayLists而不是Arrays,因为我知道这是最好的做法。现在我想知道是否使用2d ArrayList也是有益的。我已经看了一些例子,我不太清楚如何在需要时获取这些值。如果我这样做:

String[][] cheese = {
    {"chedder", "swiss", "pepperjack"},
    {"sliced", "cubed", "block"}
};
String myFavorite = cheese[0][2];

myFavorite将是胡椒,但我怎么能用2d ArrayList呢?我发现这个例子对我来说太有帮助了。我知道我接收的数据的确切行数(但不是列数),行号不会改变,所以也许常规的2d数组是最佳实践吗?

4 个答案:

答案 0 :(得分:3)

您的数据看起来不属于二维数组或列表。如果是我,我会创建对数据有意义的数据结构。如果必须使用列表列表:

List<List<String>> cheese = new ArrayList<List<String>>();
cheese.add(Arrays.asList("cheddar", "swiss", "pepperjack"));
cheese.add(Arrays.asList("sliced", "cubed", "block"));

String myFavorite = cheese.get(0).get(2);

答案 1 :(得分:2)

您可以通过让外部ArrayList成员自己ArrayList来制作2D ArrayList

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

然后,您可以将ArrayList<String>添加到cheese

favorites.add(new ArrayList<String>(Arrays.asList("cheddar", "swiss", "pepperjack")));
favorites.add(new ArrayList<String>(Arrays.asList("sliced", "cubed", "block")));

您可以通过两次连续的get调用来提取元素。

String myFavorite = cheese.get(0).get(2);

答案 2 :(得分:0)

您可以像使用单维ArrayList一样使用get函数。所以,如果您的ArrayList是干酪,那么有额外的ArrayLists,您可以尝试这样的事情:

String myFavorite = cheese.get(0).get(2);

第一个get将返回第一个ArrayList,第二个get将返回第一个ArrayList的第三个项目(第二个索引)。

答案 3 :(得分:0)

我没有示例,但您应该能够创建ArrayLists的ArrayList并执行以下操作:

String myFavorite = cheese.get(0).get(2);