以下代码行导致javac
发出不安全操作警告:
LinkedList<Node>[] buckets = new LinkedList[bucketCount];
但是,当我尝试通过这样做来解决这个问题时:
LinkedList<Node>[] buckets = new LinkedList<Node>[bucketCount];
我得到一个generic array creation
错误。我该如何解决这个问题?
以下代码行导致javac
发出不安全操作警告:
LinkedList<Node>[] buckets = new LinkedList[bucketCount];
但是,当我尝试通过这样做来解决这个问题时:
LinkedList<Node>[] buckets = new LinkedList<Node>[bucketCount];
我得到一个generic array creation
错误。我该如何解决这个问题?
简而言之,泛型类型的数组是有问题的。
变成s的buckets
一个:ArrayList
LinkedList
ArrayList<LinkedList<Node>> buckets = new ArrayList<LinkedList<Node>>(bucketCount);
for (int i = 0; i < bucketCount; ++i) {
buckets.add(new LinkedList<Node>());
}
这样,您将获得编译时类型安全。
LinkedList只有两个构造函数,一个是默认的,另一个接受一个继承Collection的参数,
public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}
也就是说LinkedList不能有初始化大小,如果需要初始化容器的容量,最好使用ArrayList,如下:
List<Node> list = new ArrayList<Node>(bucketCount);
祝你好运 :)