2

次のコード行によりjavac、安全でない操作の警告が表示されます。

LinkedList<Node>[] buckets = new LinkedList[bucketCount];

ただし、これを実行して修正しようとすると、次のようになります。

LinkedList<Node>[] buckets = new LinkedList<Node>[bucketCount];

generic array creationエラーが発生します。どうすればこれを解決できますか?

4

2 に答える 2

1

一言で言えば、ジェネリック型の配列は問題があります。

のに変換bucketsします。ArrayListLinkedList

ArrayList<LinkedList<Node>> buckets = new ArrayList<LinkedList<Node>>(bucketCount);
for (int i = 0; i < bucketCount; ++i) {
    buckets.add(new LinkedList<Node>());
}

これにより、コンパイル時の型安全性が得られます。

于 2013-03-22T10:29:18.577 に答える
0

LinkedList には 2 つのコンストラクタしかありません。1 つはデフォルトで、もう 1 つは Collection を拡張するパラメータを受け入れます。

public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}

つまり、LinkedList には初期化サイズを指定できません。コンテナーの容量を初期化する必要がある場合は、次のように ArrayList を使用することをお勧めします。

List<Node> list = new ArrayList<Node>(bucketCount);

幸運を :)

于 2013-03-22T10:42:04.823 に答える