Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java枚举vs迭代vs ForLoop_Java_Loops_Iterator_Enumeration - Fatal编程技术网

Java枚举vs迭代vs ForLoop

Java枚举vs迭代vs ForLoop,java,loops,iterator,enumeration,Java,Loops,Iterator,Enumeration,(枚举、迭代器、循环)之间的区别是什么 在下面的代码中,每个示例(枚举、迭代器、循环)都获得相同的输出] 但我需要知道他们之间的真正区别是什么?是否有具体的情况下,我应该使用其中一个,而不能使用其他?其中一种方法相对于其他方法有什么优势?关于枚举与迭代,请参见: 迭代器 在Java集合框架中取代枚举。 迭代器与枚举有两种不同:迭代器允许 调用方在调用过程中从基础集合中删除元素 具有定义良好语义的迭代。方法名已被删除 改进。 如果可读性很重要 喜欢这个 for (String s : listof

(枚举、迭代器、循环)之间的区别是什么

在下面的代码中,每个示例(枚举、迭代器、循环)都获得相同的输出]
但我需要知道他们之间的真正区别是什么?是否有具体的情况下,我应该使用其中一个,而不能使用其他?其中一种方法相对于其他方法有什么优势?

关于枚举与迭代,请参见:

迭代器 在Java集合框架中取代枚举。 迭代器与枚举有两种不同:迭代器允许 调用方在调用过程中从基础集合中删除元素 具有定义良好语义的迭代。方法名已被删除 改进。


如果可读性很重要

喜欢这个

for (String s : listofStrings) 
    {
     ... 
    }
结束

for(迭代器iter=listofstring.Iterator();iter.hasNext();)
{
字符串s=iter.next();
...
}
请注意,如果需要在迭代时删除元素,则需要使用迭代器

比如说,

List<String> list = getMyListofStrings(); 

    for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) 
    {
        String s = iter.next();
        if (someCondition) {
            iter.remove(); 
        }
    }
List List=getMyListofStrings();
for(迭代器iter=list.Iterator();iter.hasNext();)
{
字符串s=iter.next();
如果(某些条件){
iter.remove();
}
}
不能使用
for(字符串s:myList)
删除列表中的元素。
还请注意,在遍历数组时,foreach(或增强型for)只能用于获取元素,不能修改数组中的元素。

枚举VS迭代器

迭代器主要用于非线程安全集合。迭代器的设计方式是,每当对集合进行并发修改时,迭代器就会失败,也就是说,如果在多线程环境中使用为单线程环境创建的集合,并且在遍历时线程对其进行更改,则遍历会失败

枚举仅用于线程安全集合
。当在多线程环境中使用这样的集合时,可以保证数据的一致性,所以枚举永远不会失败

为了更好地了解他们的内部工作


集合及其迭代器和枚举之间具有更强的has-A关系,即双方的存在相互依赖。

首先,在Java SE 5或更高版本的应用程序中,您不会使用
Vector
。迭代器和枚举器更擅长模糊处理。如果您想了解更高抽象级别的功能,请阅读本教程:如果您在数组中反向迭代,请使用普通的
for(int i=…)
,您可以很好地删除元素。实时删除哪一个元素应该在哪种情况下使用?
List<String> list = getMyListofStrings(); 

    for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) 
    {
        String s = iter.next();
        if (someCondition) {
            iter.remove(); 
        }
    }