我正在尝试使用Java 8 Lambda表达式和流来解析一些日志。我有一个运行后运行的巨型日志文件。我想将它拆分为单独的集合,每次运行一个。我不知道日志中有多少次运行。为了锻炼我非常弱的lambda表情肌肉,我想在列表中一次性地完成它。
这是我目前的实施:
List<String> lines = readLines(fileDirectory);
Pattern runStartPattern = Pattern.compile("INFO: \\d\\d:\\d\\d:\\d\\d: Starting");
LinkedList<List<String>> testRuns = new LinkedList<>();
List<String> currentTestRun = new LinkedList<>(); // In case log starts in middle of run
testRuns.add(currentTestRun);
for(String line:lines){
if(runStartPattern.matcher(line).find()){
currentTestRun = new ArrayList<>();
testRuns.add(currentTestRun);
}
currentTestRun.add(line);
}
if(testRuns.getFirst().size()==0){ // In case log starts at a run
testRuns.removeFirst();
}
基本上类似于TomekRekawek的解决方案here,但开头的分区大小未知。
答案 0 :(得分:1)