Java 流过滤或条件

问题描述 投票:0回答:1

我有这个字符串值列表。我的条件是过滤掉长度不为6的非数字值。

我有以下 2 个过滤器;我如何添加我的或条件?

List<String> teList = new ArrayList<String>();
teList.add("123456");
teList.add("76543W");
teList.add("123R56");
teList.add("888888");
teList.add("7652");
teList.add("222222222222");
teList.add("1234526R");
teList.add("76543222R");

List<String> exlist = teList.stream()
    .filter(s -> !s.matches("[0-9]+"))
    .filter(s -> s.length() != 6)
    .collect(Collectors.toList());
System.out.println(exlist.toString());
java java-stream
1个回答
1
投票

反转您的条件并用 or (

||
) 连接它们。 (您想要保留数字值或长度为 6 的值。请参阅德摩根定律。)

List<String> exlist = teList.stream()
    .filter(s -> s.length() == 6 || s.matches("[0-9]+"))
    .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.