我尝试建立与文件的内容的地图,我的代码如下:
System.out.println("begin to build the sns map....");
String basePath = PropertyReader.getProp("oldbasepath");
String pathname = basePath + "\\user_sns.txt";
FileReader fr;
Map<Integer, List<Integer>> snsMap =
new HashMap<Integer, List<Integer>>(2000000);
try {
fr = new FileReader(pathname);
BufferedReader br = new BufferedReader(fr);
String line;
int i = 1;
while ((line = br.readLine()) != null) {
System.out.println("line number: " + i);
i++;
String[] strs = line.split("\t");
int key = Integer.parseInt(strs[0]);
int value = Integer.parseInt(strs[1]);
List<Integer> list = snsMap.get(key);
//if the follower is not in the map
if(snsMap.get(key) == null)
list = new LinkedList<Integer>();
list.add(value);
snsMap.put(key, list);
System.out.println("map size: " + snsMap.size());
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("finish building the sns map....");
return snsMap;
该方案是在第一速度非常快 ,但得到缓慢得多时打印的信息是:
map size: 1138338
line number: 30923602
map size: 1138338
line number: 30923603
....
我试图找到两个的System.out.println()子句的理由判断的BufferedReader和HashMap的性能与特点,而不是Java剖析。 有时它需要在获取行号信息后,获取地图大小的信息,有时,它需要一段时间才能得到的行号信息获取地图尺寸之后的信息。 我的问题是:这让我的程序慢? 在BufferedReader中的一个大文件或HashMap的一个大的地图吗?