【发布时间】:2016-09-12 19:43:20
【问题描述】:
我有一个可观察的列表,我试图用不同的谓词过滤它。
我有嵌套对象进行过滤。
这是第一个pojo
public Class Transaction {
private String name;
private Account account ;
private BigDecimal ammout ;
}
public class Account{
private String nameBank;
private String number;
private BigDecimal balance;
}
我使用Java 8流API做过滤,它不适用于String,但它非常适合平衡和其他类型。
这是我过滤列表的方法:
public void findByBankName(String bankName) {
ObservableList<Transaction> transactionList = FXCollections
.observableArrayList();
return transactionList.stream()
.filter(t ->
t.getAccount().getnameBank().Contains(bankName) )
.collect(Collectors.toList());
// Instead it work when i do
// .filter(t -> t.getAccount().getBalance().doubleValue() > 0 )
}
那么,我的代码有什么问题?
【问题讨论】:
-
a) 您的代码无法编译。 b) 究竟是什么问题?
-
问题是过滤器不适用于字符串,但当我与数字比较时它可以工作。我已经更新了我的代码
-
“不工作”是什么意思?你的电脑长腿走出门了吗?
-
getnameBank()返回一个String。在 Java 中,String没有Contains方法。它应该做什么?这只是.contains()的错字吗? -
transactionList 在您的示例中为空...因此过滤只会返回一个空列表。
标签: java list filter java-8 java-stream