使用removeif过滤包含对象的列表

时间:2017-12-01 16:13:22

标签: java spring-boot java-8 spring-data spring-data-jpa

我坚持使用removeif java 8并寻找帮助

List<ACHTransaction> transactions = transactionDao.retrieveTransactions(getJobParameters();
来自事务的

我想根据对象的属性

删除这些事务

如果transaction.getFileHash不为null,那么我想删除该事务。如果transaction.getFileHash为null我想保留它。

所以我正在尝试删除

List<ACHTransaction> transactions = transactionDao.retrieveTransactions(getJobParameters().removeIf(t -> (Optional.ofNullable(t.getFileHash()).orElse(0).intValue() != 0));

但我收到错误。有人可以解释removeif如何使用对象属性?

3 个答案:

答案 0 :(得分:4)

您可以检索列表,然后使用results = new Uri[]{Uri.fromFile(photoFile)}; mFilePathCallback.onReceiveValue(results); 删除元素:

removeIf

或者您可以在自己的答案中使用并使用流:

List<ACHTransaction> transactions =
    transactionDao.retrieveTransactions(getJobParameters());

transactions.removeIf(t -> t.getFileHash() != null);

答案 1 :(得分:0)

目前我解决了这个问题

List<ACHTransaction> transactions =
        achManagementDao
            .retrieveTransactions(getJobParameters())
            .stream()
            .filter(t -> !(Optional.ofNullable(t.getFileHash()).orElse(0).intValue() == 0))
            .collect(Collectors.toList());

但如果有更好的方式,请告诉我

答案 2 :(得分:0)

我在下面的代码片段中进行了测试,它可以根据需要运行。我希望这就是你要找的东西。

import java.util.ArrayList;
import java.util.List;

public class TestRemoveIf {



public static void main(String[] args) {

    Transaction myTrans1 = new Transaction("myTrans1");
    Transaction myTrans2 = new Transaction("myTrans2");
    Transaction myTrans3 = new Transaction("myTrans3");
    Transaction myTrans4 = new Transaction("myTrans4");

    myTrans1.setFileHash("not Null");
    myTrans3.setFileHash("not null");

    List<Transaction> trList = new ArrayList();
    trList.add(myTrans1);
    trList.add(myTrans2);
    trList.add(myTrans3);
    trList.add(myTrans4);

    trList.removeIf(t -> t.getFileHash()!=null);

    System.out.println(trList);


}


}


public class Transaction {

String fileHash;
String name;

public String getFileHash() {
    return fileHash;
}

public void setFileHash(String fileHash) {
    this.fileHash = fileHash;
}

public Transaction(String name) {
    super();
    this.name = name;
}

@Override
public String toString() {
    return "Transaction [fileHash=" + fileHash + ", name=" + name + "]";
}



}