我的任务是创建一个与多值数据库连接的程序。我在一个字符串中收到整个记录,其中包含值和子值的分隔符。从那里我将数据拆分为二维数组。这是一个片段(注意不同的长度):
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数组是最佳实践吗?
答案 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);