2
转换此嵌套迭代正在吹我的脑海有人可以将其转换为并行流吗?我希望能够检查与我的每位客户团队成员的标准相符的分配。我刚刚切换到了Java 8,并且正在努力围绕利用并行流来完成此聚合的最佳方式。将迭代器代码转换为流
for(Iterator<BasicDBObject> iterator = members.iterator(); iterator.hasNext();) {
BasicDBObject member = iterator.next();
//if the member doesn't have a valid assignment remove them.
boolean memberContainsValidAssignment = false;
BasicDBObject role = member.get("accountTeamRole") == null ? null : (BasicDBObject) member.get("accountTeamRole");
if (accTeamRoleCodes != null && !accTeamRoleCodes.contains(role.get("code"))) {
iterator.remove();
continue;
}
List<BasicDBObject> assignments = member.get("assignments") == null ? new ArrayList<>() : (List) member.get("assignments");
for (Iterator<BasicDBObject> assignIterator = assignments.iterator(); assignIterator.hasNext();) {
BasicDBObject assignment = assignIterator.next();
Date endDate = (Date) assignment.get("assignmentValidToDate");
Date startDate = (Date) assignment.get("assignmentValidFromDate");
if(startDate == null){//this is junk, should have never been allowed.
LOGGER.warn("There's no start date for this assignment. {}", assignment.toString());
assignIterator.remove();
continue;
}
//1. open ended assignment, it lives on forever. 2.falls in between active date.
else if(endDate == null ||(activeDate.after(startDate) && activeDate.before(endDate))){
LOGGER.debug("adding an assignment. {}", assignment.toString());
memberContainsValidAssignment = true;
convertDatesToString(assignment);
continue;
}
}
if(!memberContainsValidAssignment){
iterator.remove();
}
}
流不会让你从底层集合中删除任何东西。 –
如何根据相同的标准制作新清单?我遇到的问题是三元操作和if语句。也不知道我怎么会去做像调用转换日期.. –
国际海事组织,你的代码看起来很好,因为它是。我认为这不是Streams的任务。 – Tunaki