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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
flush()とclose()について
Java
-
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
-
4
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
java nビット目を読み取る
-
wsprintf関数の使い方について
-
C言語の変数(LSB)の合わせ込...
-
WinInet.dllを利用したHttpQuer...
-
byte配列→float型の値を読みlon...
-
直し方について教えて頂きたい...
-
BCD形式で時刻を!
-
PSQLExceptionが発生する
-
DOSバッチで変数の値を変数名に...
-
日付や時刻の"01"を" 1"に変換...
-
結合した文字列をファイル名に...
-
【Excel VBA】繰り返し処理がで...
-
Javascriptでマシン固有の情報...
-
getParameterの値変更
-
ResultSetの内部構造(Java)
-
VC++2008にてdouble型の置換に...
-
文字列生成を総当りで行う場合
-
任意の変数が任意の値になった...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
wsprintf関数の使い方について
-
javaのCSVデータ読込についてです
-
結合した文字列をファイル名に...
-
BCD形式で時刻を!
-
PSQLExceptionが発生する
-
C言語の変数(LSB)の合わせ込...
-
Stringクラスの変数の格納アド...
-
DateTimePickerに値を入れたい...
-
実行シェルからCOBOLへパラメー...
-
ResultSetの内部構造(Java)
-
DOSバッチで変数の値を変数名に...
-
char型での演算子
-
byte配列→float型の値を読みlon...
-
matchesを否定文として使う方法...
-
hiddenの値を消したくない!
-
JSPでHashMap・配列の変数の値...
-
String型の値が大文字か小文字...
-
VB.NET+Javascriptで、VB.NETで...
おすすめ情報