java - "main"Hashtable排序和反转中的java.lang.OutOfMemoryError

标签 java sorting hashtable

我正在尝试对 Hashtable 的 ArrayList (ArrayList>) 进行排序。有些 Hastable 有 3345588 个条目。当我尝试在 hastable 中排序和分配相反的顺序时,我发现

  Exception in thread "main" java.lang.OutOfMemoryError
      at java.util.Hashtable.newEntry(Hashtable.java:91)
     at java.util.Hashtable.put(Hashtable.java:766)

我的代码如下

public static Hashtable<String, Integer> sortValue(
        Hashtable<String, Integer> t) {
    // Transfer as List and sort it
    ArrayList<Map.Entry<String, Integer>> l = new ArrayList<Entry<String, Integer>>(
            t.entrySet());
    Hashtable<String, Integer> f = new Hashtable<String, Integer>();
    Collections.sort(l, new Comparator<Map.Entry<String, Integer>>() {
        public int compare(Map.Entry<String, Integer> o1,
                Map.Entry<String, Integer> o2) {
            return o1.getValue().compareTo(o2.getValue());
        }
    });
    // create new normalized Hashtable index started from 1 from the most
    // frequent key
    int a = 1;
    for (int i = l.size(); i > 0; i--) {
        f.put(l.get(i - 1).getKey(), a);// getting error here
        a++;
    }
    // System.out.println(l);

    return f;
}

最佳答案

您可以在运行程序时尝试增加虚拟机内存。您可以在这里阅读VM memory setting详细怎么做。示例:

java -Xms1024m -Xmx4096m com.sample.HelloWorld

关于java - "main"Hashtable排序和反转中的java.lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17862769/

相关文章:

unix - unix中以下三个排序命令有什么区别?

sorting - 按 etime 对 PS 命令排序

c++ - 哈希表删除函数 C++

ruby - Ruby 内部是如何实现 Hash 的? Hash 使用的是什么数据结构/算法?

JavaMailSender 发送 SimpleMailMessage 需要很长时间

java - 组件位置 (Vaadin)

java - 获取有序的值对

java - 使用两个事务管理器和 session 工厂以及 spring 和 hibernate 注释

algorithm - 一种可按插入顺序和数量级遍历的数据结构

c# - 哈希表到 Dictionary<> syncroot 。