![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
java で ArrayListの要素数の上限はいくつでしょうか?
ネットで検索したところ C# の ArrayList は 2^32 - 1 のようですけど・・・。
たて、よこ 2^64 の巨大な実数値行列があって、これの固有値を求めるプログラムを作ることになっています。
最初は double の2次元配列で行列を作ろうと思ったのですが、double配列の要素数は 2^32-1 個が限界であきらめました。別の方法を探しているところなのです。
パソコンのメモリは24GBにしてOSも64bit Windowsにしたので java が対応できれば大丈夫かと思うのですが・・・
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
JavaのArrayListもインデックス値はintを使っているようですので、2^32個になると思います。
(C++のstd::mapならsize_tなので64bit化は可能。)
ただ2^32個のdouble(8バイト)は
その値を格納するだけで32GBのメモリーが必要です。
このような巨大なデータを扱う場合は
HDD等のストレージを利用した方が良いと思います。
0000100000.dat 0~1000000のデータを格納(8メガバイト)
0000200000.dat
0000300000.dat
0000400000.dat
>たて、よこ 2^64 の巨大な実数値行列
仮に2^64個のdouble値データが存在するとして、それを保存するストレージはあるでしょうか?
100EBを超えると思います。
※もし、データの存在率が低いのであればキーをx,yとするHashMap等を使った方が良いかもしれません。
ありがとうございます。
> ただ2^32個のdouble(8バイト)はその値を格納するだけで32GBのメモリーが必要です。
なんと!
> ※もし、データの存在率が低いのであればキーをx,yとするHashMap等を使った方が良いかもしれません。
なるほど。HashMapってそういう意義もあるのですね。
大変勉強になりました。
No.2
- 回答日時:
ArrayListクラスのsize()の返値型やget()の引数型がintなので、2^31か2^31-1が上限でしょう。
> たて、よこ 2^64 の巨大な実数値行列
まともにこのサイズのdoubleの2次元行列を作ると、2^131バイトのメモリを必要とします(64+64+3=131)。
2008年に全世界で出荷されたHDDの数が5億台強 (≒2^29) だということですから、それら全てが1TBの容量を持っていたと仮定しても、合計でたった2^69バイトです。24GBメモリ、64ビットWindowsくらいじゃ全く太刀打ちできませんね。
行列自体は巨大だが、ほとんど全ての要素の値が0である(疎行列)などの条件がつかないと、現代のコンピュータでは扱えないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- 数学 2*2の行列に対して固有値の最大実部を与えるkの値を求めたい 3 2022/11/08 16:26
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
データベースのINT型項目にNULLはNG?
MySQL
-
-
4
あるDBから別のDBのテーブルをselectしたい
MySQL
-
5
【C#】DataGridViewの最大列数について
システム
-
6
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
7
flush()とclose()について
Java
-
8
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
9
System.err. printlnとSystem.out.printlnはどう違うんでしょうか?
Java
-
10
テーブルタグの中にdivを含めてはダメ?
HTML・CSS
-
11
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
12
ループ処理の際、最後だけ,"をつけたくない"
Java
-
13
GROUP BYを使ったSELECT文の総件数を求める方法
SQL Server
-
14
final修飾子を使っているのに、なぜエラーが出るのでしょうか?
Java
-
15
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
16
テーブル名をカラムとして取得する方法
Oracle
-
17
javaで大容量テキストファイルの読み込みについて
Java
-
18
「ワークスペースをビルド中」止められず
Java
-
19
「取り消しています」が表示されてから消えない
Windows 7
-
20
どこからも呼ばれていない無意味なクラスを抽出したい
Java
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
javaのCSVデータ読込についてです
-
結合した文字列をファイル名に...
-
wsprintf関数の使い方について
-
CASLIIの問題なんですが
-
実行シェルからCOBOLへパラメー...
-
Evaluate()に文字列の形式の数...
-
String型を3つで比較したい!
-
excel vba 時間計算と条件分岐...
-
BCD形式で時刻を!
-
C言語の変数(LSB)の合わせ込...
-
【struts】c:forEachのendの値...
-
javascriptで四捨五入して小数...
-
8桁整数を限りなく短い文字列に...
-
C#について質問です。文字列型(...
-
指定した日付が何日前なのかを...
-
getParameterの値変更
-
文字列から半角スペースと全角...
-
replaceAllの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
DateTimePickerに値を入れたい...
-
wsprintf関数の使い方について
-
Stringクラスの変数の格納アド...
-
BCD形式で時刻を!
-
javaのCSVデータ読込についてです
-
このプログラミング誰か教えて...
-
Evaluate()に文字列の形式の数...
-
このプログラミング誰か教えて...
-
JSPでHashMap・配列の変数の値...
-
特定の文字列を複数抜き出した...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
Javaの問題なのですが、「3文字...
-
excel vba 時間計算と条件分岐...
-
実行シェルからCOBOLへパラメー...
-
日付や時刻の"01"を" 1"に変換...
-
VB6,論理演算子Orの使い方がわ...
-
char型での演算子
おすすめ情報