2017-02-07 4 views
1

私は暗号化されたハッシュのリストを含むファイルを読んでいます。私はちょうどメモリでList<String>と読むことができます。ハッシュ値を参照するためのjavaの中で最高のメモリモデルは何ですか?

これは非常に大規模なリストと、おそらく文字列非常に無駄なメモリモデルです...ので、私は、メモリ内にこのリストを保存するためのより良い方法があるかどうかを把握したいと思います。例えば

それはUUIDの文字列のリストだった場合、私はList<UUID>にそれらを回すでしょう。

ハッシュに相当するものはありますか?


残念です - ここにいくつかの背景があります。私はいくつかのスパークマップ/縮小比較を行っています、そして、私はメモリ内のハッシュができるだけ効率的に保存されていることを確認したいと思います。


コメントはバイト配列で保存する必要があります。したがって、文字列をハッシュオブジェクトに変換してからバイト配列を取得することを意味します...

+1

ハッシュがbase64でエンコードされた文字列であると仮定すると、文字列をデコードし、各ハッシュをバイト配列として格納できます。しかし、メモリ問題が発生するためには、ファイル内に実際に多数のハッシュが必要です。いくつ持っていますか?ファイルのサイズは何ですか?最初にメモリ内のすべてのハッシュを本当に必要としていますか? –

+0

それらのサイズがすべて同じサイズ(バイト単位)であれば、おそらく読み込みチャンクの方が読みやすくなります。 – renanlf

+0

@JBNizet参照のためにバイト配列としてハッシュを格納する感覚は何ですか? – Andremoniy

答えて

0

Stringを単にString.getBytes()メソッドを使用してバイト配列に変換できます。これは、ハッシュの数値ではなく、ハッシュ値の文字列表現を構成するバイトを返します。代わりに

、あなたのハッシュ値は16進数(基数16)エンコードされた文字列であるあなたは、Googleのguavaライブラリを使用することができると仮定。ハッシュ関数を持つHashingクラスがあります。ハッシュ値を格納するクラスはHashCodeです。バイト配列(BytesHashCode)。このクラスには、インスタンスを作成するためのfromString(string)メソッドがあります。このインスタンスから、実際の値のバイト配列/ long/int表現を取得できます。このクラスは、例ではUUIDと多かれ少なかれ同等です。

+0

はグアバ15+ – hba

関連する問題