次のプログラムを実行すると、実行に約7〜8分かかりました。私はこのプログラムが実行するのに時間がかかりすぎるので、どこで間違っているのか本当に分かりません。CopyOnWriteArraySetが遅すぎる
public class Test {
public static void main(String[] args) {
final Integer[] a= new Integer[1000000];
for (int i=0; i < a.length; i++) {
a[i] = i;
}
final List<Integer> source = Arrays.asList(a);
final Set<Integer> set = new CopyOnWriteArraySet<Integer>(source);
}
}
なぜこのプログラムが遅いのですか?
私のマシンは4ギガバイトRAM
ドキュメントによれば、CopyOnWriteArraysSetはCopyOnWriteArraysListによってサポートされており、通常はセットサイズが小さく留まるアプリケーションに最適です*。 1,000,000人は小さくない。操作はO(n^2)です。 –
@Siguzaこれは本当に問題ではありません。それはまったく時間がかからない。 –