确保这不是代码味道 . 是否有可能扭转逻辑并“包容”而不是“排他”?
List names = ....
List reducedNames = ....
for (String name : names) {
// Do something
if (conditionToIncludeMet)
reducedNames.add(name);
}
return reducedNames;
导致我访问此页面的情况涉及使用indecies循环访问List的旧代码,以从List中删除元素 . 我想重构它以使用foreach风格 .
它遍历整个元素列表以验证用户有权访问哪些元素,并从列表中删除没有权限的元素 .
List services = ...
for (int i=0; i
if (!isServicePermitted(user, services.get(i)))
services.remove(i);
}
要反转此操作而不使用删除:
List services = ...
List permittedServices = ...
for (Service service:services) {
if (isServicePermitted(user, service))
permittedServices.add(service);
}
return permittedServices;
何时“删除”是首选?一个考虑因素是如果gien是一个大的列表或昂贵的“添加”,与列表大小相比只有少数删除 . 仅执行一些删除而不是添加很多内容可能更有效 . 但在我的情况下,情况不值得这样的优化 .