This question already has answers here:
Convert two dimensional array to List in java?
(9个答案)
4年前关闭。
我无法弄清楚有关以下代码的一些事情:
我试图弄清楚为什么我不能像您可能使用普通数组那样在
基本上,此代码创建一个新的
然后迭代数组,并将所有子数组保存到列表中。
顺便说一句,诸如
(9个答案)
4年前关闭。
我无法弄清楚有关以下代码的一些事情:
public final String[][] pockets = {{"STATUS CHANGERS", "RUNES", "KEY ITEMS", "TROPHIES"},
{"POTION", "SUPER POTION", "FULL HEAL"},{"ARMOR+","ATTACK+","EXP+","HEALTH+", "DISPELL+"},
{"QUEST ITEMS","STORY ITEMS","JOURNAL"},{TROPHIES}};
public final List<String[]> Pockets = Arrays.asList(pockets); //why couldn't I define it in the method, I wonder?
我试图弄清楚为什么我不能像您可能使用普通数组那样在
asList()
方法中定义2d数组。另外,我知道必须要导入一个Java子类或更多的语义方法。 最佳答案
为了将二维数组E[][]
转换为二维List<List<E>>
,您可以使用以下代码(查看下面的说明):
public final String[][] pocketArray = {{"STATUS CHANGERS", "RUNES", "KEY ITEMS", "TROPHIES"},
{"POTION", "SUPER POTION", "FULL HEAL"}, {"ARMOR+", "ATTACK+", "EXP+", "HEALTH+", "DISPELL+"},
{"QUEST ITEMS", "STORY ITEMS", "JOURNAL"}, {"TROPHIES"}};
public final List<List<String>> pocketList;
public Test()
{
pocketList = new ArrayList<>(pocketArray.length);
for (String[] pocket : pocketArray)
{
List<String> currentSubList = new ArrayList<>(pocket.length);
// Nice and fast way instead of iterating over the whole array and adding the strings to the list.
Collections.addAll(currentSubList, pocket);
// instead, you could do something like this:
//
// for (String currentString : pocket)
// {
// currentSubList.add(currentString);
// }
//
pocketList.add(currentSubList);
// Alternatively, you could use something like this:
// pocketList.add(Arrays.asList(pocket));
}
}
基本上,此代码创建一个新的
ArrayList<List<String>>
以便以后保存所有子列表。然后迭代数组,并将所有子数组保存到列表中。
顺便说一句,诸如
pockets
与Pockets
之类的名称易于在以后引起混乱,我建议您像以前一样,以小写字母开头的字段名,并根据其目的和可能的类型唯一地命名它们。