首页 > 编程知识 正文

php用foreach遍历二维数组(JAVA的arraylist)

时间:2023-05-04 17:55:36 阅读:64981 作者:816

遍历ArrayList的方式包括迭代器、foreach循环和get(I )等。 其中迭代器和get方法有具体的代码。 foreach循环是怎么实现的?

通过反向编译class,让我们来看看JAVA如何处理foreach并遍历ArrayList和数组。

首先,foreach是遍历list的底层,还是遍历所用的迭代器; foreach遍历排列是从传统的i=0到i=length-1的遍历,书写方式上只是封装在foreach的形式中

扩展:为什么foreach无法在遍历list时调用remove方法

因为在迭代器遍历过程中,生成迭代器时在迭代器中记录list的modCount字段,不允许对list进行更改(删除、添加元素)。 调用next时返回检查迭代器维护的expectedModCount是否等于列表中的modCount,如果等于,则抛出异常的concurrentmodificationexception。 因此,使用foreach循环时,不能删除或添加list元素(modCount也将更改)。 要在遍历过程中删除,请使用迭代器遍历方法,然后使用iterator.remove (方法)。 在此为最后一个next ) )跳过的元素。 不能在调用next之前调用。 否则,也会抛出异常的IllegalStateException。

原始代码

列表列表=new ArrayList (;

for(intI=0; i 10; I )

list.add(I;

for(integerI:list ) {

system.out.println(I;

}

int [ ] arr={ 1,2,3,4,5 };

for(intI:ARR ) {

system.out.println(I;

}

将上述代码编译为class,反向编译如下:

Iterator var7=var1.iterator (;

wile(var7.Hasnext ) () ) ) ) ) )。

integervar3=(integer ) var7.next );

system.out.println(var3;

}

int [ ] var8=new int [ ] { 1,2,3,4,5 };

int[] var9=var8;

int var4=var8.length;

for(intvar5=0; var5 var4; var5) {

int var6=var9[var5];

system.out.println(var6;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。