我正在尝试做一个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(使用前将#替换为@)