java - 过滤列表的属性不包含在另一个列表的属性中

标签 java list java-stream

public class Bill {
    private Long code;

    public Bill(Long code) {
        this.code = code;
    }
    // setters and Getters
}

class Detail {
    private BillId billId;

    public Detail(BillId billId) {
        this.billId = billId;
    }
    // setters and Getters

}

class BillId {
    private Long number;
    private Long code;

    public BillId(Long number, Long code) {
        this.number = number;
        this.code = code;
    }
    // setters and Getters
}

现在我有了

List<Bill> listBill = new ArrayList<>();
listBill.add(new Bill(1L));
listBill.add(new Bill(2L));
listBill.add(new Bill(3L));
listBill.add(new Bill(4L));
listBill.add(new Bill(5L));
listBill.add(new Bill(6L));


List<Detail> listDetail = new ArrayList<>();
listDetail.add(new Detail(new BillId(1000L, 10L)));
listDetail.add(new Detail(new BillId(1000L, 2L)));
listDetail.add(new Detail(new BillId(2000L, 30L)));
listDetail.add(new Detail(new BillId(2000L, 4L)));
listDetail.add(new Detail(new BillId(3000L, 50L)));
listDetail.add(new Detail(new BillId(3000L, 6L)));

现在我需要一个新列表,从listBill获取项目,其中某些项目与listDetail中的某些项目不匹配

detail.getBillId ().getCode() not match with bill.getCode()

预期列表对于新内容抱歉!

newListBill.add(new Bill(1L)); 
newListBill.add(new Bill(3L));
newListBill.add(new Bill(5L));

最佳答案

使用流API:

listBill.stream()
.filter( b -> !listDetail.stream()
     .anyMatch( d -> d.getBillId().getCode() == b.getCode() ) )
.collect( Collectors.toList() );

关于java - 过滤列表的属性不包含在另一个列表的属性中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54680557/

相关文章:

java - 获取应用程序使用的jar库名称

java - 生成 JSON 字符串

Java流在减少操作的情况下给出语法错误

java - 使用 Java 8 连接集合

java - 我们能区分黑莓是处于USB模式还是充电模式吗?

java - Android:在白色背景下跟踪 switchcompat 不可见

list - Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?

python - 如何将用户输入转换为列表并删除所有出现的特定数字或字符?

python - 根据属性值将列表拆分为子列表

Java Streams 检查空值