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)
和List的TransferS:
....
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)
但我想通过fromAccountID和toAccountID,因此结果将是一个List的Transfer秒.如何使用Java8 Stream过滤器功能?
按这两个属性过滤并收集到一个列表中。
List<Transfer> resultSet =
transfers.stream().filter(t -> id.equals(t.getFromAccountID()) ||
id.equals(t.toAccountID()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
您可以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)