根据下面的代码,有没有可能使用这种风格的p
循环从属性列表中删除for的索引?
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
循环来实现这一点
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);
}
}
发布于 2012-07-19 23:35:25
不,您需要使用老式的for循环来获取索引。
当然,您也可以自己将其添加到for-each循环中,但是最好使用旧的变体。
发布于 2012-07-19 23:40:52
如何使用适当的Iterator
及其remove
方法呢?
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( );
}
}
发布于 2012-07-19 23:45:29
正如Tim Anderson建议的那样,您还可以在循环之外修改列表
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);
https://stackoverflow.com/questions/11564262
复制相似问题