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()メソッドを持っている場合、それを2番目のwhileループに入れます。以前の方法がないので行き詰まります。
使用できる方法があれば教えてください。FileUtils.readLines()は3GBのファイルであり、Javaメモリを使用してすべてのファイルを保存したくないため使用できません。