我有一个可观察的列表,我试图用不同的谓词来过滤它。
我有嵌套的对象,我会在其上进行过滤。
这是第一个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 )
}
那么,我的代码的问题是什么?
答案 0 :(得分:1)
我认为你只是在这个问题中手工输入代码,这就是编译错误的原因。我重构了你的课程(有一些假设)。
帐户类
scatter3d(pre4$Comp.1, pre4$Comp.2, pre4$Comp.3, groups=as.factor(pre4$cluster),
surface=FALSE, grid=FALSE, ellipsoid=TRUE)
交易类
public class Account{
private String nameBank;
private String number;
private BigDecimal balance;
public String getNameBank() {
return nameBank;
}
public void setNameBank(String nameBank) {
this.nameBank = nameBank;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public BigDecimal getBalance() {
return balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
}
我创建了这个类并命名为TransactionsManager
public class Transaction {
private String name;
private Account account ;
private BigDecimal ammout ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public BigDecimal getAmmout() {
return ammout;
}
public void setAmmout(BigDecimal ammout) {
this.ammout = ammout;
}
}
希望这有助于!!