我正在嘗試執(zhí)行以下操作....我有以下模式下的字符串列表:John,Peter,CarlRose,Joanne,Natalie目前,我正在逐行閱讀并輸出流...喜歡這個(gè): Files.lines(myfile).toURI()))這將返回一個(gè)流。我知道我可以將它們收集到一個(gè)列表中,但我想知道在這個(gè)流中我是否可以拆分并執(zhí)行更多邏輯?我嘗試拆分每行并過濾,以防三個(gè)預(yù)期字段中的任何一個(gè)為空,這可能嗎?目前,我以“舊方式”擁有它,如下所示: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貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
在收集到列表之前,您可能正在尋找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貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
如果您想要一種簡(jiǎn)單的方法來檢查所有拆分的項(xiàng)目,則可以使用:
Arrays.stream(names).allMatch(StringUtils::isNotBlank)
而不是在條件中分別檢查每個(gè)項(xiàng)目。
下面是完整示例:
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());
如果有幫助,您還可以使用之前來剪切所有名稱開頭和結(jié)尾處的空格。.map(String::trim)
.allMatch()
添加回答
舉報(bào)
0/150
提交
取消