use*_*ser 157 java arrays arraylist
我想创建一个如下所示的arraylist数组:
ArrayList<Individual>[] group = new ArrayList<Individual>()[4]
Run Code Online (Sandbox Code Playgroud)
但它没有编译.我怎样才能做到这一点?
MBy*_*ByD 132
根据Oracle文档:
"你无法创建参数化类型的数组"
相反,你可以这样做:
ArrayList<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>(4);
Run Code Online (Sandbox Code Playgroud)
正如汤姆·霍金(Tom Hawting)所说 - 强调,它做得更好:
List<List<Individual>> group = new ArrayList<List<Individual>>(4);
Run Code Online (Sandbox Code Playgroud)
Mar*_*cus 91
正如其他人提到的那样,使用另一个列表来存储ArrayList可能更好,但是如果必须使用数组:
ArrayList<Individual>[] group = (ArrayList<Individual>[])new ArrayList[4];
Run Code Online (Sandbox Code Playgroud)
kel*_*cer 75
这有效:
ArrayList<String>[] group = new ArrayList[4];
Run Code Online (Sandbox Code Playgroud)
小智 23
您可以创建一个扩展ArrayList的类
class IndividualList extends ArrayList<Individual> {
}
Run Code Online (Sandbox Code Playgroud)
然后创建数组
IndividualList[] group = new IndividualList[10];
Run Code Online (Sandbox Code Playgroud)
sms*_*lce 17
我完全不明白,为什么每个人都在建议阵列的genric类型,尤其是这个问题.
如果我需要索引n不同的arraylists 怎么办?
通过声明List<List<Integer>>我需要n ArrayList<Integer>手动创建对象或者使用for循环创建n列表或其他方式,无论如何,创建n列表始终是我的职责.
如果我们通过铸造声明它是不是很好List<Integer>[] = (List<Integer>[]) new List<?>[somenumber].我认为这是一个很好的设计,人们不必自己创建所有的索引对象(arraylists)
任何人都可以告诉我为什么这个(arrayform)将是一个糟糕的设计,它的缺点是什么?
Arj*_*ndy 13
您可以创建Array of ArrayList
List<Integer>[] outer = new List[number];
for (int i = 0; i < number; i++) {
outer[i] = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)
这在这样的场景中会有所帮助.你知道外面的大小.但内在的大小各不相同.在这里,您可以创建一个固定长度的数组,其中包含大小变化的数组列表.希望这对你有所帮助.
在Java 8及更高版本中,您可以以更好的方式完成它.
List<Integer>[] outer = new List[number];
Arrays.setAll(outer, element -> new ArrayList<>());
Run Code Online (Sandbox Code Playgroud)
甚至更好地使用方法参考
List<Integer>[] outer = new List[10];
Arrays.setAll(outer, ArrayList :: new);
Run Code Online (Sandbox Code Playgroud)
这工作,ArrayList数组.尝试了解它是如何工作的.
import java.util.*;
public class ArrayOfArrayList {
public static void main(String[] args) {
// Put the length of the array you need
ArrayList<String>[] group = new ArrayList[15];
for (int x = 0; x < group.length; x++) {
group[x] = new ArrayList<>();
}
//Add some thing to first array
group[0].add("Some");
group[0].add("Code");
//Add some thing to Secondarray
group[1].add("In here");
//Try to output 'em
System.out.println(group[0]);
System.out.println(group[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
Kelvincer对部分代码的信用.
这种情况的问题是通过使用arraylist你会得到o(n)的时间复杂度,以便在特定位置添加.如果使用数组,则通过声明数组来创建内存位置,因此它是常量
| 归档时间: |
|
| 查看次数: |
240230 次 |
| 最近记录: |