作者:小雨闹不住 | 来源:互联网 | 2023-12-12 15:34
本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。
for-each语句 for-each语句是java5的新特征之一,在遍历数组、集合方面,for-each为开发人员提供了极大的方便。 for-each语句是for语句的特殊简化版本,但是for-each语句并不能完全取代for语句,然而,任何的for-each语句都可以改写为for语句版本。
for-each的语句格式: for(元素类型type 元素变量value : 遍历对象obj){ 引用了x的Java语句; }
public void ArrayTest ( ) { int arr[ ] = { 1 , 2 , 3 , 4 , 5 , 6 } ; for ( int x : arr) { System. out. println ( "遍历后的数组为:" + arr[ x] ) ; } }
局限性 如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍
public class TestArray2 { public static void main ( String args[ ] ) { int arr[ ] = new int [ 4 ] ; System. out. println ( "----未赋值前输出刚刚定义的数组----" ) ; for ( int x : arr) { System. out. println ( x) ; } System. out. println ( "----通过循环变量给数组元素赋值----" ) ; for ( int i = 3 ; i > 0 ; i-- ) { arr[ i] = i; } System. out. println ( "----赋值后,foreach输出创建好的数组----" ) ; for ( int x : arr) { System. out. println ( x) ; } } }
迭代器 迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
获取一个迭代器:
import java. util. ArrayList; import java. util. Iterator; public class RunoobTest { public static void main ( String[ ] args) { ArrayList< String> sites &#61; new ArrayList < String> ( ) ; sites. add ( "Google" ) ; sites. add ( "Runoob" ) ; sites. add ( "Taobao" ) ; sites. add ( "Zhihu" ) ; Iterator< String> it &#61; sites. iterator ( ) ; System. out. println ( it. next ( ) ) ; } }
循环集合元素&#xff1a;
import java. util. ArrayList; import java. util. Iterator; public class RunoobTest { public static void main ( String[ ] args) { ArrayList< String> sites &#61; new ArrayList < String> ( ) ; sites. add ( "Google" ) ; sites. add ( "Runoob" ) ; sites. add ( "Taobao" ) ; sites. add ( "Zhihu" ) ; Iterator< String> it &#61; sites. iterator ( ) ; while ( it. hasNext ( ) ) { System. out. println ( it. next ( ) ) ; } } }
删除元素&#xff1a;
import java. util. ArrayList; import java. util. Iterator; public class RunoobTest { public static void main ( String[ ] args) { ArrayList< Integer> numbers &#61; new ArrayList < Integer> ( ) ; numbers. add ( 12 ) ; numbers. add ( 8 ) ; numbers. add ( 2 ) ; numbers. add ( 23 ) ; Iterator< Integer> it &#61; numbers. iterator ( ) ; while ( it. hasNext ( ) ) { Integer i &#61; it. next ( ) ; if ( i < 10 ) { it. remove ( ) ; } } System. out. println ( numbers) ; } }