如果 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 内存来存储所有文件。