ckbluwwbhksg 2012-08-20 10:11
浏览 592
已采纳

迭代器iterator不能再次迭代吗

public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("_name", "name");
        map.put("_age", "age");
        Set<String> set = map.keySet();
        Iterator iterator = set.iterator();
        // 第一次迭代
        StringBuffer str1 = new StringBuffer();
        while (iterator.hasNext()) {
            str1.append(iterator.next() + ",");
        }
        String str1To = str1.substring(0, str1.lastIndexOf(",")).toString();
        System.out.println(str1To);
        // 第二次迭代
        StringBuffer str2 = new StringBuffer();
        while (iterator.hasNext()) {
            // 断点调式好像不会进入到这里面来
            str2.append(iterator.next() + ",");
        }
        String str2To = str2.substring(0, str2.lastIndexOf(",")).toString();// 这一行报错
        System.out.println(str2To);
    }

代码如上,两次迭代为什么不行,难道是第一次迭代的时候已经迭代到最后了吗?这样会影响到第二次迭代?

  • 写回答

4条回答 默认 最新

  • Jeff-HT-Lee 2012-08-20 11:48
    关注

    第一次已经到尾部了,第二次迭代的那个循环就不去,所以str2里面没有内容, str2.substring(0, -1)报StringIndexOutOfBoundsException的异常。

    如果你想重新迭代,重新获取一下iterator就可以了: itrator = str1.iterator(),这样就从头开始了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?