我正在尝试将文件中的行读入Arraylist。这是我的作家:
v = foo()
TypeError: 'staticmethod' object is not callable
这是文件kemal.txt中的一个例子:
private Map<Integer, ArrayList<Integer>> motPage =
new HashMap<Integer, ArrayList<Integer>>();
private void writer() throws UnsupportedEncodingException, FileNotFoundException, IOException{
try (Writer writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("/home/kdiri/workJuno/motorRecherche/src/kemal.txt"), "utf-8"))) {
for(Map.Entry<Integer, ArrayList<Integer>> entry : motPage.entrySet()){
writer.write(entry.getKey() + " : " + entry.getValue() + "\n");
}
}
}
我的问题是如何才能将这些行有效地读入Hashmap?因为文件的大小约500MB。提前谢谢。
答案 0 :(得分:1)
正如JonSkeet所说,你应该从一些有用的东西开始。以下是一种可能的方式。该片段保持相当冗长以显示原则。
String line = "0 : [38, 38, 38, 38, 199, 199, 199, 199, 3004, 3004, 3004, 3004,
23, 23]";
int firstSpace = line.indexOf(" ");
int leftSquareBracket = line.indexOf("[");
int rightSquareBracket = line.indexOf("]");
String keyString = line.substring(0, firstSpace);
String[] valuesString = line.substring(leftSquareBracket + 1, rightSquareBracket)
.split(", ");
int key = new Integer(keyString);
List<Integer> values = new ArrayList<>(valuesString.length);
for (String value : valuesString) {
values.add(new Integer(value));
}
Map<Integer, List<Integer>> motPage = new HashMap<>();
motPage.put(key, values);
顺便说一下。 read ... these lines efficiently into Hashmap
取决于您的要求。效率可以是例如:
当代码段不符合您的efficiency
条件时。开始调整影响您标准的部分。