【发布时间】:2010-04-19 03:49:23
【问题描述】:
我正在尝试创建一个邻接列表来存储图形。该实现在存储 100,000 条记录时运行良好。但是,当我尝试存储大约 100 万条记录时 我遇到了 OutofMemory 错误:
线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间 在 java.util.Arrays.copyOfRange(Arrays.java:3209) 在 java.lang.String.(String.java:215) 在 java.io.BufferedReader.readLine(BufferedReader.java:331) 在 java.io.BufferedReader.readLine(BufferedReader.java:362) 在 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
我想知道,是否有更好的方法来实现邻接列表。另外,我一开始就知道节点的数量,并且将来我在访问节点时会展平列表。有什么建议吗?
谢谢
【问题讨论】:
标签: java data-structures heap-memory adjacency-list