我正在尝试对 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/