gpt4 book ai didi

java - 扫描仪将指针重置到上一行

转载 作者:行者123 更新时间:2023-12-01 18:54:51 26 4
gpt4 key购买 nike

如果 Scanner 类有 previous() 方法,我的问题就可以解决。我问这个问题是想知道是否有任何方法可以实现此功能。

输入:内容如下的文件

a,1
a,2
a,3
b,1
c,1
c,2
c,3
c,4
d,1
d,2
d,3
e,1
f,1

我需要创建具有相同字母表的所有行的列表。

try {
Scanner scanner = new Scanner(new File(fileName));
List<String> procList = null;
String line =null;
while (scanner.hasNextLine()){
line = scanner.nextLine();
System.out.println(line);
String[] sParts = line.split(",");
procList = new ArrayList<String>();
procList.add(line);
boolean isSamealpha = true;
while(isSamealpha){
String s1 = scanner.nextLine();
if (s1.contains(sParts[0])){
procList.add(s1);
}else{
isSamealpha = false;
System.out.println(procList);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}

我得到的输出如下

a,1
[a,1, a,2, a,3]
c,1
[c,1, c,2, c,3, c,4]
d,2
[d,2, d,3]
f,1
[f,1]

如您所见,它错过了 b 和 e 的列表。如果我有scanner.previous()方法,我会把它放在第二个while循环的else中。因为没有以前的方法,所以我被卡住了。

如果有什么方法可以使用,请告诉我。我无法使用 FileUtils.readLines(),因为它是一个 3GB 的文件,而且我不想使用我的 java 内存来存储所有文件。

最佳答案

我建议重新考虑你的算法。您缺少标记,因为您的算法涉及提前读取以确定序列何时损坏,但您没有将下一行输入收集到与放置“重复”条目的相同结构中。

您无需向后阅读即可解决此问题。如果您知道输入始终是排序的,则只需逐行读取并保留对最后一行的引用(以与当前行进行比较)。

关于java - 扫描仪将指针重置到上一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385035/

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