希望有人可以帮助我。我有一个Invoice
类的ArrayList
。我试图得到的是过滤这个ArrayList
,并找到其中一个属性匹配regex
的第一个元素。 的Invoice
类看起来是这样的:与正则表达式不工作的Java流过滤器
public class Invoice {
private final SimpleStringProperty docNum;
private final SimpleStringProperty orderNum;
public Invoice{
this.docNum = new SimpleStringProperty();
this.orderNum = new SimpleStringProperty();
}
//getters and setters
}
我这个regex
(\\D+)
为了筛选发现,如果在有不是整数的格式orderNum
属性的任何值。 所以基本上我使用这个流
Optional<Invoice> invoice = list
.stream()
.filter(line -> line.getOrderNum())
.matches("(\\D+)"))
.findFirst();
但它不起作用。任何想法? 我一直在寻找,我发现了如何使用pattern.asPredicate()
像this:
Pattern pattern = Pattern.compile("...");
List<String> matching = list.stream()
.filter(pattern.asPredicate())
.collect(Collectors.toList());
随着Integer
List
,String
等,但我还没有找到如何与POJO
做到这一点。 任何帮助将不胜感激。 美好的一天
java8流没有'matches'方法,是该代码有效? – ByeBye