adi*_*tya 2 java collections design-patterns
java 的Enumeration接口有2个方法
为什么Iterator不扩展Enumeration并添加remove方法()?
另外,如果我想要做的就是遍历我的集合,我可以使用枚举(或者如果它扩展枚举的迭代器),因为循环语句只需要枚举.我不必担心收集被修改
为什么不
Iterator扩展Enumeration和添加remove()方法?
从文档:
Iterator取代了EnumerationJava Collections Framework.迭代器在两个方面与枚举不同:
- 迭代器允许调用者在迭代期间使用定义良好的语义从底层集合中删除元素.
- 方法名称已得到改进.
我怀疑后者是引入全新界面而不是扩展现有界面的真正原因.
另外,如果我想要做的就是遍历我的集合,我可以使用枚举(或者如果它扩展枚举的迭代器),因为循环语句只需要枚举.我不必担心收集被修改
好吧,如果你不想修改集合,那就不要打电话remove().如果你真的,真的不相信自己,你可以使用Collections.unmodifiableCollection()et al创建一个只读包装器.
最后,值得注意的是,如果使用for-each循环迭代集合,则remove()无论如何都无法访问该方法:
for (String s : str_list) {
...
}
Run Code Online (Sandbox Code Playgroud)
这里,我们使用的是Iterator接口,但是无法访问实际的迭代器对象.