私はプロジェクトに取り組んでおり、大規模なハッシュマップで終わるので、今は値でソートしようとしています。大きなハッシュマップをメモリ上で効率よくソートするにはどうすればいいですか?
ArrayList<Map.Entry<String, Integer>> entries = new ArrayList<Map.Entry<String, Integer>>(BloomFilter.map.entrySet());
しかし、これを行うと、OutOfMemoryErrorが発生します。
これを防ぐ方法はありますか?
編集:これそれはブルームフィルタ機能で
hash1 = MurmurHash2.hash32(genom);
hash2 = genom.hashCode();
inList = true;
for (int i = 0; i < k-1 ; i++) {
hashedGenom = (hash1 + hash2 * i) % a.size();
hashedGenom = CheckForNegative(hashedGenom);
if(!(a.get(hashedGenom))){
a.set(hashedGenom);
inList = false;
}
}
return inList;
だ場合、私のこれが私のイムブルームフィルタをやっている。ここで
if(CheckIfThere(s, k, fBitset)){
// System.out.println("var");
val = map.get(s);
if(val != null){
map.put(s, map.get(s) + 1);
//map.remove(s);
//map.put(s, new Integer(val + 1));
}else{
map.put(s,1);
}
は、私は、文字列を取得し、基本的に午前とCheckIfThereに送信し、それが真実なら、私はそれをハッシュマップに入れます。
どのくらい大きいですか? VMに十分な大きさのヒープを与えていますか? – pvg
'BloomFilter.map.entrySet()'は何をしますか? – teppic
Collections.sort(エントリは、新しいコンパレータ<のMap.Entry <文字列、整数>>(){ \t \t \t \t @Override \t \t \t \t公共INT(エントリ<文字列、整数>まず、エントリ<文字列を比較します、整数>秒){ \t \t \t \t \tリターンsecond.getValue() - first.getValue(); \t \t \t \t} \t \t \t}); – bocante