gpt4 book ai didi

java - 如何创建(然后获取元素)列表的数组/列表?

转载 作者:行者123 更新时间:2023-12-01 08:10:20 25 4
gpt4 key购买 nike

如何在 Java 中创建数组或列表列表?

我有:

List<Item> rows = new ArrayList<Item>();

rows.add(new Item("a"));
rows.add(new Item("b"));

...以及如何创建像上面这样的列表数组?

List<Item> lists[] = {};
lists[0] = rows;
<小时/>

这是我正在尝试做的事情:

public class MainActivity extends FragmentActivity {

public static List<List<Item>> lists;
String tabs[] = { "Tab 1", "Tab 2" };

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

lists = new ArrayList<List<Item>>();

for (int i = 0; i < tabs.length; i++)
{
lists.add(i, init());
}
}

public List<Item> init()
{
List<Item> rows = new ArrayList<Item>();

rows.add(new Item("test"));

return rows;
}

}

...然后我尝试使用以下方法获取该列表:

MainActivity.lists.get(0);

最佳答案

您不应该创建泛型类型数组,因为 it's not type safe 。这是该链接的引用

Parameterized types do not have exact runtime type information. As a consequence, the array store check does not work because it uses the dynamic type information regarding the array's (non-exact) component type for the array store check.

强调我的。

基本上,数组在运行时使用存储检查,以检查存储在其中的元素是否与实际的类型兼容大批。现在,由于类型删除,泛型类型在运行时没有实际类型信息,因此数组存储检查将不起作用。

例如(取自上面的链接):

Pair<Integer,Integer>[] intPairArr = new Pair<Integer,Integer>[10]; // illegal
Object[] objArr = intPairArr;
objArr[0] = new Pair<String,String>("",""); // should fail, but would succeed

它会起作用,因为 Pair<Integer, Integer>[] ,实际上是Pair[]在运行时,并将成功存储 Pair<String, String> ,这也是 Pair在运行时。

但是,一旦您尝试从数组中获取元素,您的代码就会进一步失败。

<小时/>

因此,您应该创建一个 列表列表:

List<List<Item>> itemList = new ArrayList<List<Item>>();
itemList.add(rows);

关于java - 如何创建(然后获取元素)列表的数组/列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998806/

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