使用 removeif 过滤包含对象的列表

Sat*_*tya 3 java java-8 spring-data spring-data-jpa spring-boot

我坚持使用 removeif java 8 并寻求帮助

List<ACHTransaction> transactions = transactionDao.retrieveTransactions(getJobParameters();
Run Code Online (Sandbox Code Playgroud)

从交易中我想根据检查对象的属性删除这些交易

如果 transaction.getFileHash 不为空,那么我想删除该交易。如果 transaction.getFileHash 为 null 我想保留它。

所以我正在尝试 removeif

List<ACHTransaction> transactions = transactionDao.retrieveTransactions(getJobParameters().removeIf(t -> (Optional.ofNullable(t.getFileHash()).orElse(0).intValue() != 0));
Run Code Online (Sandbox Code Playgroud)

但我收到错误。有人可以解释 removeif 如何处理对象属性吗?

Fed*_*ner 5

您可以检索列表,然后使用以下命令删除元素removeIf

List<ACHTransaction> transactions =
    transactionDao.retrieveTransactions(getJobParameters());

transactions.removeIf(t -> t.getFileHash() != null);
Run Code Online (Sandbox Code Playgroud)

或者您可以按照自己的答案进行操作并使用流:

List<ACHTransaction> transactions =
    transactionDao.retrieveTransactions(getJobParameters()).stream()
        .filter(t -> t.getFileHash() == null)
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)