java中remove循环_在Java中调用foreach循环中的remove [duplicate]

确保这不是代码味道 . 是否有可能扭转逻辑并“包容”而不是“排他”?

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是一个大的列表或昂贵的“添加”,与列表大小相比只有少数删除 . 仅执行一些删除而不是添加很多内容可能更有效 . 但在我的情况下,情况不值得这样的优化 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值