以下代码抛出ClassCastException:
ArrayList<V>[] table = (ArrayList<V>[]) new Object[tableSize];
如果这不起作用,我怎样才能创建一个ArrayList数组?
编辑:
为了保持清醒,每个人都明白这个问题。我需要一个包含多个ArrayLists的数组。
EDIT2:
tableSize是一个int。
答案 0 :(得分:-1)
编辑:好的,这是你可以做的:
ArrayList<String>[] table = new ArrayList[tableSize];
它编译并使用Java 8我正在使用。
答案 1 :(得分:-1)
对于Java,您无法创建类型为通用的数组的新实例。
T[] array = new T[size];
- 导致编译错误Cannot create a generic array of T
。
当您尝试使用它时会出现同样的错误
ArrayList<T>[] array = new ArrayList<T>[size];
出于同样的原因。编译后,Java运行时不知道T
是什么,因为它无法分配有效的内存空间。
要传递此问题,您有以下选项:
ArrayList[] array =new ArrayList[size];
List<List<T>> list = new ArrayList<List<T>>();
答案 2 :(得分:-1)
不是最顺利的方法但是如果我正确地得到了你的问题,这样的事情应该可以解决问题:
int tableSize = 2;
Collection<String> listWithItems = new ArrayList<>();
listWithItems.add("Foo");
listWithItems.add("Bar");
Collection<Collection<String>> listOfList = new ArrayList<>();
listOfList.add(listWithItems);
Object[] array = listOfList.toArray(new Object[tableSize]);
System.out.println("Col: " + listOfList);
System.out.println("Array: " + Arrays.toString(array));
打印出来是:
Col: [[Foo, Bar]]
Array: [[Foo, Bar], null]
简短的例子没有额外的“绒毛”来获得初始数组:
Object[] theArrayOfLists = new ArrayList<List<SomeClass>>().toArray(new Object[tableSize]);