gpt4 book ai didi

Java ObservableList 使用字符串谓词进行过滤

转载 作者:行者123 更新时间:2023-12-01 09:55:31 26 4
gpt4 key购买 nike

我有一个可观察列表,我尝试通过不同的谓词来过滤它。

我有要进行过滤的嵌套对象。

这是第一个 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,但它非常适合balance和其他类型。

这是我过滤列表的方法:

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 )
}

那么,我的代码有什么问题吗?

最佳答案

我认为您只是手写了这个问题中的代码,这就是出现编译错误的原因。我重构了你的类(class)(带有一些假设)。

账户类别

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;
}
}

交易类

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;
}
}

我创建了这个类并命名为 TransactionsManager

public class TransactionsManager {
private final List<Transaction> transactionsList;

public TransactionsManager(List<Transaction> transactionsList) {
this.transactionsList = Collections.unmodifiableList(transactionsList);
}

public List<Transaction> findByBankName(String bankName) {
return transactionsList.stream()
.filter(t -> t.getAccount().getNameBank().contains(bankName))
.collect(Collectors.toList());
}
}

希望这有帮助!!

关于Java ObservableList 使用字符串谓词进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37263724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com