首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在Java中获取for-each循环的索引

是否可以在Java中获取for-each循环的索引
EN

Stack Overflow用户
提问于 2012-07-19 23:33:50
回答 4查看 6.5K关注 0票数 17

根据下面的代码,有没有可能使用这种风格的p循环从属性列表中删除for的索引?

代码语言:javascript
复制
List<Properties> propertiesList = new ArrayList<Properties>();
String keyToDelete = "blah";

for(Properties p : propertiesList) {
    if(p.getKey().equals(keyToDelete)) {
        propertiesList.remove(index) //How to remove the element at index 'p'
    }
}

这就是我如何使用另一个for循环来实现这一点

代码语言:javascript
复制
List<Properties> propertiesList = new ArrayList<Properties>();
String keyToDelete = "blah";

for(int i = 0; i < propertiesList.size(); i++) {
        if(p.getKey().equals(keyToDelete)) {
                propertiesList.remove(i);
        }
}
EN

回答 4

Stack Overflow用户

发布于 2012-07-19 23:35:25

不,您需要使用老式的for循环来获取索引。

当然,您也可以自己将其添加到for-each循环中,但是最好使用旧的变体。

票数 8
EN

Stack Overflow用户

发布于 2012-07-19 23:40:52

如何使用适当的Iterator及其remove方法呢?

代码语言:javascript
复制
List<Properties> propertiesList = new ArrayList<Properties>();
String keyToDelete = "blah";

for (
    Iterator<Properties> iter = propertiesList.iterator( );
    iter.hasNext( );
)
{
    Properties p = iter.next( );

    if(p.getKey().equals(keyToDelete)) {
        iter.remove( );
    }
}
票数 8
EN

Stack Overflow用户

发布于 2012-07-19 23:45:29

正如Tim Anderson建议的那样,您还可以在循环之外修改列表

代码语言:javascript
复制
List<Properties> propertiesList = new ArrayList<Properties>();
String keyToDelete = "blah";
List<Properties> propertiesToRemove = new ArrayList<Properties>();


for(Properties p : propertiesList) {
    if(p.getKey().equals(keyToDelete)) {
        propertiesToRemove.add(p) ;
    }
}

propertiesList.removeAll(propertiesToRemove);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11564262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档