グラフを格納する隣接リストを作成しようとしています。100,000 レコードを格納している間、実装は正常に動作します。ただし、約 100 万件のレコードを保存しようとすると、OutofMemory エラーが発生しました。
スレッド「メイン」での例外 java.lang.OutOfMemoryError: java.util.Arrays.copyOfRange(Arrays.java:3209) の Java ヒープ領域 (java.lang.String.(String.java:215) の java.io.BufferedReader) .readLine(BufferedReader.java:331) at java.io.BufferedReader.readLine(BufferedReader.java:362) at liarliar.main(liarliar.java:39)
以下は私の実装です
HashMap<String,ArrayList<String>> adj = new HashMap<String,ArrayList<String>>(num);
while ((str = in.readLine()) != null)
{
StringTokenizer Tok = new StringTokenizer(str);
name = (String) Tok.nextElement();
cnt = Integer.valueOf(Tok.nextToken());
ArrayList<String> templist = new ArrayList<String>(cnt);
while(cnt>0)
{
templist.add(in.readLine());
cnt--;
}
adj.put(name,templist);
} //done creating a adjacency list
隣接リストを実装するためのより良い方法があるかどうか疑問に思っています。また、最初からノードの数を知っており、将来、ノードにアクセスするときにリストをフラット化します。助言がありますか ?
ありがとう