Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以内存效率高的方式对大型哈希映射值进行排序?_Java_Arraylist_Collections_Hashmap - Fatal编程技术网

Java 如何以内存效率高的方式对大型哈希映射值进行排序?

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中。有几种算法可以解决它 但我认

我正在做一个项目,结果得到了一个大的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