Java 如何以内存效率高的方式对大型哈希映射值进行排序?
我正在做一个项目,结果得到了一个大的hashmap,现在我正在尝试按值对它进行排序Java 如何以内存效率高的方式对大型哈希映射值进行排序?,java,arraylist,collections,hashmap,Java,Arraylist,Collections,Hashmap,我正在做一个项目,结果得到了一个大的hashmap,现在我正在尝试按值对它进行排序 ArrayList<Map.Entry<String, Integer>> entries = new ArrayList<Map.Entry<String, Integer>>(BloomFilter.map.entrySet()); 我基本上是获取字符串并将其发送到CheckIfThere,如果它为真,我将把它放到hashmap中。有几种算法可以解决它 但我认
ArrayList<Map.Entry<String, Integer>> entries = new ArrayList<Map.Entry<String, Integer>>(BloomFilter.map.entrySet());
我基本上是获取字符串并将其发送到CheckIfThere,如果它为真,我将把它放到hashmap中。有几种算法可以解决它 但我认为最简单的方法是使用数据库 您可以将所有值插入mysql/oracle/sql server/postgres。。。然后
select xxxx from xxx order by xxx
如果您担心数据库太大且难以部署,请尝试一下多大才算大?您是否给VM提供了足够大的堆?BloomFilter.map.entrySet()做什么?Collections.sort(entries,new Comparator(){@Override public int compare(Entry first,Entry second){return second.getValue()-first.getValue();});我们都看过文件了。你需要告诉我们更多的细节。特别是关于bloomfilter实现,它似乎持有一个条目映射?对于Boom筛选器来说,这并没有什么意义。我使用bloomfilter作为频率,在该哈希映射中有密钥对值,我的bloomfilter表示这些元素已经在列表中,所以我获取它们并增加它们的值,然后将其放入哈希映射中。在这种情况下,bloomfilter.mapItı是一个控制台应用程序,我认为不应该使用它数据库请不要把数据库当作您认为的数据库,sqlite只是SQL接口中的一个外部排序算法库。而外部排序算法正是您所需要的:-)
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);
}
select xxxx from xxx order by xxx