我被困在使用removeif java 8并寻求帮助

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

从事务中,我想基于对象的检查属性删除那些事务

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

所以我正在尝试removeif
List<ACHTransaction> transactions = transactionDao.retrieveTransactions(getJobParameters().removeIf(t -> (Optional.ofNullable(t.getFileHash()).orElse(0).intValue() != 0));

但是我遇到了错误。有人可以解释removeif如何使用对象属性吗?

最佳答案

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

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

transactions.removeIf(t -> t.getFileHash() != null);

或者,您可以按照自己的答案进行操作并使用流:
List<ACHTransaction> transactions =
    transactionDao.retrieveTransactions(getJobParameters()).stream()
        .filter(t -> t.getFileHash() == null)
        .collect(Collectors.toList());

10-06 05:46