回答編集履歴

1

ちょっと文章変更

2018/07/11 22:26

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 結論から言うとJavaの言語仕様とJavaVMの制限から不可能です。
5
+ 結論から言うとJavaの言語仕様とJavaVMの制限から**不可能**です。
6
6
 
7
7
 
8
8
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- 結論としては、JavaとJavaVMと配列を使う限り、どんなにメモリを積んだり、オプションでヒープサイズなどを調整しても、2^31個の要素の配列を作ることは**不可能**です。なお、`long`を使えばと思うかも知れませんが、Javaの配列は添字アクセス等が`int`になるため、結局キャストが必要になり、意味がありません。ArrayListも`int`であり同じです(そもそもArrayListは内部で配列を使って実装されています)。LinkedListであれば実装上の制限がないように思えますが、`size()`等が`int`を使うため、同じと思われます(ここら辺は試してません)。
21
+ つまり、JavaとJavaVMと配列を使う限り、どんなにメモリを積んだり、オプションでヒープサイズなどを調整しても、2^31個の要素の配列を作ることは**不可能**になるということです。なお、`long`を使えばと思うかも知れませんが、Javaの配列は添字アクセス等が`int`になるため、結局キャストが必要になり、意味がありません。ArrayListも`int`であり同じです(そもそもArrayListは内部で配列を使って実装されています)。LinkedListであれば実装上の制限がないように思えますが、`size()`等が`int`を使うため、同じと思われます(ここら辺は試してません)。
22
22
 
23
23
 
24
24