我有一个大文件,格式如下: -
第一行
第二行
第三行
第四行
第五行
Data1; Data2; Data3
Data1; Data2; Data3Data1
; Data2; Data3
......
....
我希望我的代码跳过前5行,然后对于其余的行,它会将行拆分为';' 并与第三项进行一些字符串比较.我希望将Java 8 Streams用于此目的,但无法弄清楚如何正确地解决它.我已经使用BufferedReader完成了我想做的事情,代码如下: -
try (BufferedReader reader = Files.newBufferedReader(dictionaryPath)) {
String line;
reader.readLine();
reader.readLine();
reader.readLine();
reader.readLine();
reader.readLine();
while ((line = reader.readLine()) != null) {
String[] dictData = line.split(";");
if (data.equals(dictData[2])) {
System.out.println("Your Data Item is: " + dictData[0]);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不确定如何使用Java 8流实现与上面相同的功能.我正在尝试以下内容:
try (Stream<String> lines = Files.lines(dictionaryPath)) {
lines.skip(5).map(line -> line.split(";")).flatMap(Arrays::stream)
Run Code Online (Sandbox Code Playgroud)
但无法理解更多.我希望得到一些帮助.
你可以尝试这样的事情:
Files.lines(dictionaryPath)
.skip(5) // skip first five lines
.map(line -> line.split(";")) // split by ';'
.filter(dictData -> data.equals(dictData[2])) // filter by second element
.findFirst() // get first that matches and, if present, print it
.ifPresent(dictData -> System.out.println("Your Data Item is: " + dictData[0]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5164 次 |
| 最近记录: |