我正在嘗試執行以下操作....我有以下模式下的字符串列表:John,Peter,CarlRose,Joanne,Natalie目前,我正在逐行閱讀并輸出流...喜歡這個: Files.lines(myfile).toURI()))這將返回一個流。我知道我可以將它們收集到一個列表中,但我想知道在這個流中我是否可以拆分并執行更多邏輯?我嘗試拆分每行并過濾,以防三個預期字段中的任何一個為空,這可能嗎?目前,我以“舊方式”擁有它,如下所示:List<TripleNames> validValues = new ArrayList();for(String value:values) { //values represent each line comma separated final String[] names = line.split(","); if (StringUtils.isNotBlank(names[0]) && StringUtils.isNotBlank(names[1]).... { validValues.add(new TripleNames(names[0], names[1], names[2]); } }有什么想法嗎?
2 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
在收集到列表之前,您可能正在尋找ping作為:map
List<TripleNames> validValues = values.stream() .map(line -> line.split(",")) .filter(names -> StringUtils.isNotBlank(names[0]) && StringUtils.isNotBlank(names[1])) .map(names -> new TripleNames(names[0], names[1], names[2])) .collect(Collectors.toList());

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
如果您想要一種簡單的方法來檢查所有拆分的項目,則可以使用:
Arrays.stream(names).allMatch(StringUtils::isNotBlank)
而不是在條件中分別檢查每個項目。
下面是完整示例:
List<String> validValues = values.stream() .map(line -> line.split(",")) .filter(names -> Arrays.stream(names).allMatch(StringUtils::isNotBlank)) .map(names -> new TripleNames(names[0], names[1], names[2])) .collect(Collectors.toList());
如果有幫助,您還可以使用之前來剪切所有名稱開頭和結尾處的空格。.map(String::trim)
.allMatch()
添加回答
舉報
0/150
提交
取消