gpt4 book ai didi

java - 在 Java 中使用 Arrays.asList() 处理二维数组

转载 作者:行者123 更新时间:2023-12-01 16:55:09 27 4
gpt4 key购买 nike

我无法弄清楚以下代码的一些内容:

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() 中定义二维数组像普通数组一样的方法。另外,我知道必须有一个要导入的 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以后很容易引起混淆,我建议您以小写字母开头字段名称,并根据其用途和可能的类型对它们进行唯一命名,就像我上面所做的那样。

关于java - 在 Java 中使用 Arrays.asList() 处理二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com