java - 当我们有 itreator 时为什么要引入 for 循环 With Using Same Map Entry Function

标签 java

<分区>

当我们有 for lop 那么为什么我们使用迭代器下面的代码是一些作为迭代器给出的结果工作

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, String> hasmap  = new HashMap<String, String>();
        hasmap.put("1", "Java");
        hasmap.put("2", ".Net");
        hasmap.put("3", "C++");
        hasmap.put("4", "Pearl");
        hasmap.put("5", "PHP");

        for (Entry<String, String> entry : hasmap.entrySet()) {

                System.out.println("For Loop Get Key"+entry.getKey());
                System.out.println("For Loop Get Value"+entry.getValue());

        }
        Set set = hasmap.entrySet();
        Iterator itr =  set.iterator();
        while(itr.hasNext()){
            Map.Entry map = (Entry) itr.next();
            System.out.println(map.getKey());
            System.out.println(map.getValue());
        }


    }   

}

最佳答案

您帖子中的迭代循环版本是历史使用的问题; foreach循环是在 Java 1.5 中引入的。

在那之前,foreach 循环是使用 Iterator 实现的构造(已可用 since Java 1.2 )。


使用Iterator 的一个原因是它的.remove() 方法,它可以安全地删除一个元素而不会抛出ConcurrentModificationException。 ,只要循环在迭代时被修改(这在 Java 中是不允许的),就会抛出此错误。

另一方面,Java 中的简单 foreach 循环是只读的,但更简洁,通常会产生更清晰、更易于阅读的代码:

for (String str : array) {
  System.out.println(str);
}

对比

Iterator<String> arrayItr = array.iterator();
while (arrayItr.hasNext()) {
  String str = arrayItr.next();
  System.out.println(str);
}

关于java - 当我们有 itreator 时为什么要引入 for 循环 With Using Same Map Entry Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29301310/

相关文章:

java - 在 Fragment 中设置 onClickListener 时出现 NullPointerException

java - 使用 Xor 进行编解码

eclipse 中的 java.lang.UnsupportedClassVersionError

java - 错误 : cannot initialize module TreeWalker - Unable to instantiate JUnitTestCase

java - 绘制跨多个 View 或面板或水平滚动的 Java 2D 图表

java - onFaceDetection 在运行时只调用一次或两次,但在使用断点调试时可以完美运行

java - 合并来自多个 Jenkins 作业的测试覆盖率和测试结果

java - Spark流程序无法连接到接收器org.apache.SparkException : java. io.Exception:连接到localhost时出错:9999

java - 尝试将 bufferedWrite 写入 txt 文件,但不起作用

java - 如何为循环中创建的 100 个文本字段创建一个changeListener?