找出 Java 8 中两个集合的区别?

2024-01-31

我正在尝试做一个List将所有书籍合二为一Collection是其他人所不存在的。我的问题是我需要根据图书 ID 进行比较,所以我不能只测试第一个集合中的书是否包含在第二个集合中,我必须确定第二个集合中的任何书是否具有与第二个集合相同的 ID第一本书。

我有下面的代码来比较两个书籍集合并过滤第一个集合:

List<Book> parentBooks = listOfBooks1.stream().filter(book->
  !listOfBooks2.contains(book)).collect(Collectors.toList());

该代码无法正常工作,因为我正在比较对象本身。我需要根据 bookId 而不是整个书籍对象来比较对象。我应该如何更改代码,以便它可以根据 bookId (book.getId()) 进行比较?


List<Book> books1 = ...;
List<Book> books2 = ...;
Set<Integer> ids = books2.stream()
        .map(Book::getId)
        .collect(Collectors.toSet());
List<Book> parentBooks = books1.stream()
        .filter(book -> !ids.contains(book.getId()))
        .collect(Collectors.toList());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找出 Java 8 中两个集合的区别? 的相关文章

随机推荐