【发布时间】:2018-07-25 20:58:01
【问题描述】:
如何使用 java 8 流编写下面的代码。
我们有一个包含去年书籍详细信息的列表和另一个包含当年书籍详细信息的列表。我们需要合并两个列表来获得书的最终细节。需要将当年列表中较旧版本的书籍与上一年列表进行比较以确定这些书籍的价格。两个列表之间的匹配条件是书籍 ID。而且我们不应该修改 BookDetailsLastYear 列表和 BookDetailsCurrentYear 列表。
public List<Books> determineLatestBookDetails(List<BookDetailsLastYear> lastYearDetails, List<BookDetailsCurrentYear> currentYearDetails) {
List<Books> booklist = new ArrayList<>();
for(BookDetailsLastYear bdly: lastYearDetails) {
if(bdly.getId() > 15) {
for(BookDetailsCurrentYear bdcy: currentYearDetails) {
if(!bdcy.getEdition().equals("current")) {
if(bdly.getId() == bdcy.getId()) {
Books book = new Books();
book.setId(bdly.getId());
if(bdly.getPrice() >= bdcy.getPrice()) {
book.setPrice(bdly.getPrice());
} else {
book.setPrice(bdcy.getPrice());
}
booklist.add(book);
}
}
}
}
}
return booklist;
}
【问题讨论】:
-
你尝试了什么?
-
除非一个实例代表多个对象,否则不应以复数形式命名一个类。
-
@shmosel 这对于非英语为母语的人来说很常见。在我的项目中,人们会写类似 simular、cross-sell、crosssale、variation-axis 之类的东西,而你对此无能为力……
-
@Wow 除了告诉人们你的意思。
-
@Naresh,我认为您的代码逻辑有很大缺陷,因为您需要检查当年的书籍在版本字段中是否有“当前”。
标签: java loops java-8 nested java-stream