сначала у меня есть двумерный массив, хранящий много чисел, а затем я использовал массив таблиц hushtable для хранения пар, образованных числами каждой строки двумерного массива.например, в первой строке массива 2d числа равны 1 2 3 4 5, тогда пары должны быть 1,2 1,3 1,4, 1,5 и т. д. код для генерации пар и сохранения в хеш-таблице:
Hashtable [] table=new Hashtable [lineCounter];
int [] pairCounter=new int[lineCounter];
for(int i=0;i<lineCounter;i++)
{
table[i]=new Hashtable();
for (int j=0;j<lineitem2[i]-1;j++)
{
for(int t=j+1;t<lineitem2[i];t++)
{
int firstnum=freItem[i][j];
int secnum=freItem[i][t];
String value=firstnum+":"+secnum;
//System.out.println(firstnum+"``"+secnum);
table[i].put(pairCounter[i],value);
pairCounter[i]++;
//System.out.println(i+":::"+table[i].get(firstnum));
}
}
}
после сохранения каждой пары каждой строки, я хочу сравнить каждую пару в каждой строке с другими, чтобы узнать, сколько раз эта пара появляется, код:
Hashtable resulttable=new Hashtable();
int [] pairresult=new int [lineCounter];
for(int i=0;i<lineCounter;i++)
{
//Set set1 = table[i].entrySet();
//Iterator it1 = set1.iterator();
Enumeration keys = table[i].keys();
//for(int j=i+1;j<lineCounter;j++)
//{
while (keys.hasMoreElements())
{
int pairs=0;
//Map.Entry entry1 = (Map.Entry) it1.next();
int key = (Integer)keys.nextElement();
String curvalue = (String)table[i].get( key );
for(int j=i+1;j<lineCounter;j++)
{
//Set set2 = table[j].entrySet();
//Iterator it2 = set2.iterator();
Enumeration keys2 = table[j].keys();
while (keys2.hasMoreElements())
{
//Map.Entry entry2 = (Map.Entry) it2.next();
//System.out.println(entry2.getKey() + " and " + entry2.getValue());
int key2 = (Integer)keys2.nextElement();
String curvalue2 = (String)table[j].get( key2 );
if(curvalue.equals(curvalue2))
{
pairs++;
table[j].remove(key2);
}
}
}
if(pairs>=0.02*lineCounter)
{
resulttable.put(curvalue,pairs);
}
}
// }
}
но после запуска его с входным файлом я получил ошибку:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.StringBuilder.toString(StringBuilder.java:430)
Что-то не так с моим методом сравнения пар?и почему я получил эту ошибку, пожалуйста, помогите спасибо.