gpt4 book ai didi

java - txt 文件中的多个字符串搜索(java)

转载 作者:行者123 更新时间:2023-12-01 09:22:49 27 4
gpt4 key购买 nike

BufferedReader br2 = new BufferedReader(
new InputStreamReader(new FileInputStream(id_zastavky), "windows-1250")
);

for (int i = 0; i < id_linky_list.size(); i++)
{
while ((sCurrentLine2 = br2.readLine()) != null)
{
String pom = id_linky_list.get(i);
String[] result = sCurrentLine2.split("\\|");
if((result[1].toString()).equals(pom.toString()))
{
System.out.println(result[1].toString()+" " +pom.toString() + " " + result[3]);
}
}
}
br2.close();

嘿伙计们。任何人都可以给我建议,为什么我的 FOR 循环仅使用 id_linky_list a 中的第一项然后退出?我认为问题出在这一行

while ((sCurrentLine2 = br2.readLine()) != null)

。我的列表中有超过 5000 个项目,我需要比较它们是否存在于我的 txt 文件中。如果我运行我的应用程序,for 循环仅获取第一项。我应该如何修改我的代码才能使其正常工作?感谢您的帮助。

最佳答案

在 for 循环的第一次迭代期间,将读取整个文件,并且 br2.readLine() 在下一次迭代中将始终返回 null。

如果文件很小,您可以构建一个 map ,然后可以使用该 map 来检查内容

    File file = new File("filename");
List<String> lines = Files.linesOf(file, Charset.defaultCharset());
Map<String, List<String>> map = lines.stream().collect(Collectors.groupingBy(line -> line.split("\\|")[1]));
List<String> id_linky_list = null;
for (int i = 0; i < id_linky_list.size(); i++) {
if (map.get(id_linky_list.get(i)) != null) {
//sysout
}
}

更新

Map<String, List<String>> text = Files.lines(file.toPath(), Charset.forName("windows-1250")).collect(Collectors.groupingBy(line -> line.split("\\|")[1]));

关于java - txt 文件中的多个字符串搜索(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40048730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com