为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在Java的for-each循环中访问迭代计数器?

有没有办法在Java的for-each循环中访问迭代计数器?

浮云间 2019-09-02 14:53:20
在Java的for-each循环中是否有一种方法for(String s : stringArray) {  doSomethingWith(s);}找出循环已经处理的频率?除了使用旧的和众所周知的for(int i=0; i < boundary; i++)循环之外,还有构造int i = 0;for(String s : stringArray) {  doSomethingWith(s);  i++;}在for-each循环中使用这种计数器的唯一方法是什么?
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

还有另一种方式。


鉴于您编写自己的Index类和静态方法,可以返回Iterable此类的实例


for (Index<String> each: With.index(stringArray)) {

    each.value;

    each.index;

    ...

}

执行的地方With.index是什么样的


class With {

    public static <T> Iterable<Index<T>> index(final T[] array) {

        return new Iterable<Index<T>>() {

            public Iterator<Index<T>> iterator() {

                return new Iterator<Index<T>>() {

                    index = 0;

                    public boolean hasNext() { return index < array.size }

                    public Index<T> next() { return new Index(array[index], index++); }

                    ...

                }

            }

        }

    }

}


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 547 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信