Java8流过滤器由多个参数组成

Sar*_*oev 7 java java-8 java-stream

我有以下课程:

public class Transfer {
    private String fromAccountID;
    private String toAccountID;
    private double amount;
}
Run Code Online (Sandbox Code Playgroud)

ListTransferS:

....
private List<Transfer> transfers = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我知道如何获得一个转移历史记录:

transfers.stream().filter(transfer -> 
    transfer.getFromAccountID().equals(id)).findFirst().get();
Run Code Online (Sandbox Code Playgroud)

但我想通过fromAccountIDtoAccountID,因此结果将是一个ListTransfer秒.如何使用Java8 Stream过滤器功能?

Ous*_* D. 6

按这两个属性过滤并收集到一个列表中。

List<Transfer> resultSet = 
      transfers.stream().filter(t -> id.equals(t.getFromAccountID()) || 
                        id.equals(t.toAccountID()))
               .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)


Era*_*ran 5

您可以filter通过属性 (getFromAccountID()getToAccountID()) 以及collect将 传递filter给 a的元素List

List<Transfer> filtered = 
    transfers.stream()
             .filter(t -> t.getFromAccountID().equals(id) || t.getToAccountID().equals(id))
             .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)