如何在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);
答案 0 :(得分:4)
您不应该创建一个泛型类型数组,因为it's not type safe。这是该链接的引用
参数化类型没有确切的运行时类型信息。因此,数组存储检查不起作用,因为它使用有关数组存储检查的数组(非精确)组件类型的动态类型信息。
强调我的。
基本上,数组在运行时使用存储检查来检查存储在其中的元素是否与兼容 的实际阵列。现在,由于 type erasure ,泛型类型在运行时没有实际的类型信息,因此数组存储检查将不起作用。
E.g。 (摘自上面的链接):
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);
答案 1 :(得分:2)
这是您创建列表列表
的方法List<List<Item>> listOfList = new ArrayList<List<Item>>();
listOfList.add(new ArrayList<Item>());
listOfList.get(0).add(new Item());
和数组列表
List<Item[]> listOfArray = new ArrayList<Item[]>();
listOfArray.add(new Item[] { item1, item2});