带有字符串

时间:2016-05-16 21:42:20

标签: java list filter java-8 java-stream

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

我有嵌套的对象,我会在其上进行过滤。

这是第一个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 )
}

那么,我的代码的问题是什么?

1 个答案:

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

希望这有助于!!