从文件中获取字符串行号的有效方法
Efficient way to get line number of bunch of string from a file
我想从文件中搜索字符串列表并获取行号。我正在寻找一种有效的方法来做到这一点。我不想一次搜索一个字符串并打开和关闭文件。
使用 HashMap<String, List<Integer>>
.
存储文件中每个字符串出现的行号
这将使您能够在几微秒内找到给定字符串出现的所有行。
这是一种方法,如果每一行都是一个字符串:
Map<String, List<Integer>> index = new HashMap<>();
LineNumberReader lines = new LineNumberReader(new FileReader("myfile.txt"));
for (String line = lines.readLine(); line != null; line = lines.readLine()){
index.computeIfAbsent(line, x -> new ArrayList<>()).add(lines.getLineNumber());
}
如果每一行都是多个字符串,则更改这一行
index.computeIfAbsent(line, x -> new ArrayList<>()).add(lines.getLineNumber());
到
Arrays.stream(line.split(" ")).forEach(word ->
index.computeIfAbsent(word, x -> new ArrayList<>())
.add(lines.getLineNumber())
);
我想从文件中搜索字符串列表并获取行号。我正在寻找一种有效的方法来做到这一点。我不想一次搜索一个字符串并打开和关闭文件。
使用 HashMap<String, List<Integer>>
.
这将使您能够在几微秒内找到给定字符串出现的所有行。
这是一种方法,如果每一行都是一个字符串:
Map<String, List<Integer>> index = new HashMap<>();
LineNumberReader lines = new LineNumberReader(new FileReader("myfile.txt"));
for (String line = lines.readLine(); line != null; line = lines.readLine()){
index.computeIfAbsent(line, x -> new ArrayList<>()).add(lines.getLineNumber());
}
如果每一行都是多个字符串,则更改这一行
index.computeIfAbsent(line, x -> new ArrayList<>()).add(lines.getLineNumber());
到
Arrays.stream(line.split(" ")).forEach(word ->
index.computeIfAbsent(word, x -> new ArrayList<>())
.add(lines.getLineNumber())
);