从文件中获取字符串行号的有效方法

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())
);