Java 如何在没有嵌套迭代的情况下重写迭代?
以下是我的迭代,但其中一个是嵌套的:Java 如何在没有嵌套迭代的情况下重写迭代?,java,java-stream,Java,Java Stream,以下是我的迭代,但其中一个是嵌套的: objects.forEach(obj -> { if (obj.getType() == Type.APPLICATION) { clientApplicationPriorities.add(getClientApplicationPriority(obj.getApplicationShortInfo().getId(), clientId, priority, null))
objects.forEach(obj -> {
if (obj.getType() == Type.APPLICATION) {
clientApplicationPriorities.add(getClientApplicationPriority(obj.getApplicationShortInfo().getId(), clientId, priority, null));
} else if (obj.getType() == Type.FOLDER) {
final FoldersShortInfo folderInfo = obj.getFolderShortInfo();
final String folderName = folderInfo.getName();
final List<ApplicationShortInfo> appInfos = folderInfo.getApplications();
appInfos.forEach(appInfo -> clientApplicationPriorities.add(getClientApplicationPriority(appInfo.getId(), clientId, priority, folderName)));
} else {
throw new FolderRequestException();
}
});
objects.forEach(obj->{
if(obj.getType()==Type.APPLICATION){
添加(getClientApplicationPriority(obj.getApplicationShortInfo().getId(),clientId,priority,null));
}else if(obj.getType()==Type.FOLDER){
final FoldersShortInfo folderInfo=obj.getFolderShortInfo();
最后一个字符串folderName=folderInfo.getName();
最终列表appInfos=folderInfo.getApplications();
appInfos.forEach(appInfo->clientApplicationPriorities.add(getClientApplicationPriority(appInfo.getId(),clientId,priority,folderName));
}否则{
抛出新的FolderRequestException();
}
});
如何使用流API重写它
List<Employee> objects = new ArrayList<Employee>();
for (Employee emp : objects) {
switch (emp.getType()) {
case Type.application: {
clientApplicationPriorities.add(
getClientApplicationPriority(obj.getApplicationShortInfo().getId(), clientId, priority, null));
}
case Type.folder: {
final FoldersShortInfo folderInfo = obj.getFolderShortInfo();
final String folderName = folderInfo.getName();
final List<ApplicationShortInfo> appInfos = folderInfo.getApplications();
appInfos.forEach(appInfo -> clientApplicationPriorities
.add(getClientApplicationPriority(appInfo.getId(), clientId, priority, folderName)));
}
default: {
throw new FolderRequestException();
}
}
};
List objects=new ArrayList();
用于(员工emp:对象){
开关(emp.getType()){
案例类型.应用:{
clientApplicationPriorities.add(
getClientApplicationPriority(obj.getApplicationShortInfo().getId(),clientId,priority,null));
}
案例类型。文件夹:{
final FoldersShortInfo folderInfo=obj.getFolderShortInfo();
最后一个字符串folderName=folderInfo.getName();
最终列表appInfos=folderInfo.getApplications();
appInfos.forEach(appInfo->clientApplicationPriorities
.add(getClientApplicationPriority(appInfo.getId(),clientId,priority,folderName));
}
默认值:{
抛出新的FolderRequestException();
}
}
};
添加更多详细信息,以便用户可以进行测试并提出建议我假设您想要删除内部的
appInfos.forEach()
?不需要开关。是的,这是一种良好的做法,但它不是“需要的”。还有,你没有回答这个问题。是的。我添加了评论以添加更多细节。而且,它使代码干净易懂,所以我建议使用switch。