A099用foreach遍历集合或数组
- 格式:pdf
- 大小:307.78 KB
- 文档页数:2
java中的foreach用法陃a是一种面向对象的编程语言,它被广泛应用于各种领域。
在Java中,foreach是一种非常常用的语法结构,它可以用来遍历数组、集合等数据结构。
在本文中,我们将详细介绍Java中foreach的用法及其相关知识点。
一、foreach的基本语法在Java中,foreach的基本语法如下:for (元素类型元素变量 : 遍历对象) {// 循环体}其中,元素类型是指遍历对象中每个元素的类型,元素变量是指遍历对象中每个元素的变量名,遍历对象是指需要遍历的数组、集合等数据结构。
下面是一个简单的例子,演示了如何使用foreach遍历数组:int[] array = {1, 2, 3, 4, 5};for (int element : array) {System.out.println(element);}上述代码将依次输出数组中的每个元素。
二、foreach的工作原理在Java中,foreach实际上是一种语法糖,它可以将遍历对象转换为一个迭代器,然后使用迭代器来遍历对象中的每个元素。
换句话说,foreach的本质是使用迭代器来实现遍历。
下面是一个简单的例子,演示了foreach的工作原理:List<String> list = new ArrayList<>();list.add('Java');list.add('Python');list.add('C++');for (String element : list) {System.out.println(element);}上述代码将依次输出列表中的每个元素。
三、foreach的注意事项在使用foreach时,需要注意以下几点:1. 遍历对象必须是一个数组、集合等可迭代对象。
2. 元素变量必须与遍历对象中的元素类型相同。
3. 在foreach循环中,不能修改遍历对象中的元素。
java foreach 循环的用法在Java中,foreach循环也被称为增强for循环,用于遍历数组或集合的元素。
它提供了一种简洁、易读的语法,减少了编写遍历代码的冗余。
1. 遍历数组:javaCopy codepublic class ForEachExample {public static void main(String[] args) {int[] numbers = {1, 2, 3, 4, 5};// 使用foreach循环遍历数组for (int number : numbers) {System.out.println(number);}}}2. 遍历集合:javaCopy codeimport java.util.ArrayList;import java.util.List;public class ForEachExample {public static void main(String[] args) {List<String> fruits = new ArrayList<>(); fruits.add("Apple");fruits.add("Banana");fruits.add("Orange");// 使用foreach循环遍历集合for (String fruit : fruits) {System.out.println(fruit);}}}3. 遍历Map:javaCopy codeimport java.util.HashMap;import java.util.Map;public class ForEachExample {public static void main(String[] args) {Map<String, Integer> ages = new HashMap<>();ages.put("Alice", 25);ages.put("Bob", 30);ages.put("Charlie", 22);// 使用foreach循环遍历Mapfor (Map.Entry<String, Integer> entry : ages.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue() + " years old");}}}在以上示例中,foreach 循环的语法是for (elementType element : array) 或 for (elementType element : collection)。
mybatis使用foreach遍历list集合或者array数组方式MyBatis是一个基于Java的持久层框架,它简化了数据库操作并提供了灵活的SQL映射功能。
在MyBatis中,我们可以使用foreach语句来遍历一个List集合或者一个Array数组,这种方式非常灵活和方便。
在MyBatis中使用foreach语句遍历List集合的方式如下:```xmlSELECT * FROM user WHERE id IN<foreach item="item" collection="list" open="("separator="," close=")">#{item}</foreach></select>```在这个例子中,我们使用了``selectUsersByIds``作为查询的id。
``parameterType``指定了参数类型,``list``是传递给``foreach``的List集合,``item``表示遍历的每一个元素。
2. 在Java代码中,创建一个包含需要查询的id的List集合,然后执行对应的查询方法:```javaList<Integer> ids = Arrays.asList(1, 2, 3);List<User> users = sqlSession.selectList("selectUsersByIds", ids);```在这个例子中,我们创建了一个包含了id的List集合,然后将其传递给``selectUsersByIds``方法并执行查询。
使用foreach语句遍历Array数组的方式与遍历List集合类似,只是参数类型由List改为Array,并将``collection``属性的值改为数组的名称。
foreach用法遍历数组一、什么是foreachforeach是PHP中的一种循环结构,用于遍历数组。
它可以让我们轻松地对数组进行操作,而不需要手动编写循环语句。
foreach语句的语法如下:```foreach (array_expression as $value)statement```其中,array_expression是要被遍历的数组,$value是当前迭代到的元素值。
二、基本用法1. 遍历索引数组索引数组是指下标为数字类型的数组。
我们可以使用foreach语句来遍历索引数组,并输出每个元素的值。
```$colors = array("red", "green", "blue");foreach ($colors as $color) {echo $color . "<br>";}```上面的代码会输出以下内容:```redgreenblue```2. 遍历关联数组关联数组是指下标为字符串类型的数组。
我们可以使用foreach语句来遍历关联数组,并输出每个元素的键和值。
```$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");foreach($age as $key => $value) {echo "Key=" . $key . ", Value=" . $value . "<br>";}```上面的代码会输出以下内容:```Key=Peter, Value=35Key=Ben, Value=37Key=Joe, Value=43```3. 遍历多维数组多维数组是指包含其他数组作为元素的数组。
Java foreach循环用法在Java编程中,我们经常需要遍历数组或集合中的元素。
为了简化遍历的过程,Java提供了foreach循环(也称为增强for循环),它能够以一种简洁而直观的方式遍历数组或集合中的元素。
本文将详细介绍Java foreach循环的用法和注意事项。
1. foreach循环语法foreach循环是一种迭代器模式,它可以遍历数组或实现了Iterable接口的集合类。
其语法如下:for (元素类型变量名 : 数组或集合) {// 执行代码块}其中,元素类型代表数组或集合中元素的类型,变量名代表每次迭代获取到的当前元素。
2. 遍历数组使用foreach循环遍历数组非常简单和方便。
下面是一个示例代码,展示了如何使用foreach循环遍历整型数组并打印每个元素:int[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) {System.out.println(number);}输出结果为:12345上述代码中,我们定义了一个整型数组numbers并初始化了一些值。
然后使用foreach循环逐个获取数组中的元素,并通过System.out.println()方法打印出来。
3. 遍历集合除了数组,我们还可以使用foreach循环遍历实现了Iterable接口的集合类,例如ArrayList、LinkedList等。
下面是一个示例代码,展示了如何使用foreach循环遍历ArrayList并打印每个元素:import java.util.ArrayList;ArrayList<String> fruits = new ArrayList<>();fruits.add("apple");fruits.add("banana");fruits.add("orange");for (String fruit : fruits) {System.out.println(fruit);}输出结果为:applebananaorange上述代码中,我们创建了一个ArrayList对象fruits并添加了一些水果名称。
foreach用法Foreach,即“foreach遍历循环”,是一种编程语言中的一种迭代结构,它可以让程序员循环遍历数组、字典或容器中的每一个元素。
foreach语句是C #、JavaScript以及许多其他程序语言中的一种常见用法,用于遍历列表中的每个元素。
foreach语句的格式是: foreach(元素 in器){对元素执行操作}foreach语句可以用于遍历数组、字典(也称为哈希表)、集合(JavaScriptC #)和其他容器结构,因为它可以循环遍历容器中的元素。
最常见的foreach循环用法是遍历数组,其格式为: foreach (int i in array){对int i执行操作}通过这种方式,程序员可以循环遍历数组中的每一个元素,并根据其中的任何值执行操作。
此外,在一些编程语言中,foreach循环也可以用于遍历字典,其格式为: foreach(string key in dict){对key执行操作} 语句中,key表示字典中的每个键,通过这样的方式,程序员可以循环遍历字典中的所有键,并对其中的任何键执行操作。
foreach循环还可以用于遍历集合,其格式为: foreach(string str in set){对str执行操作}与字典相似,str表示集合中的每一个元素,因此程序员可以循环遍历集合中的所有元素,并对其中任何一个元素执行操作。
最后,foreach循环还可以用于遍历其他容器,其格式为:foreach(object obj in container){对obj执行操作} 与数组、字典和集合类似,obj表示容器中的每一个元素,所以程序员可以循环遍历容器中的每一个元素,并对其中任何一个元素执行操作。
到目前为止,就foreach循环的使用而言,上面所介绍的就是主要内容。
它可以仅仅用一行代码就可以遍历容器中的每一个元素,因此,可以极大地减少程序的开发时间。
因此,foreach循环在当今程序开发中非常常见。
Java中的foreach循环是一种简洁而有效的迭代方式,而lambda表达式则为我们提供了更加便利的方式来定义匿名函数。
本文将详细介绍Java中foreach的用法以及如何结合lambda表达式使用foreach 来达到更高效的循环遍历。
一、foreach循环的基本语法在Java中,foreach循环是一种简化了的循环方式,它可以遍历数组、集合等容器类型的数据。
其基本语法如下:```Javafor (element_type element : collection) {// 循环体}```其中,element_type表示容器中元素的类型,element表示在循环的每一次迭代中,当前被遍历到的元素,collection则为要被遍历的集合类型的变量名。
二、使用foreach循环遍历数组1. 遍历数组在Java中,我们可以使用foreach循环来遍历数组,示例代码如下:```Javaint[] arr = {1, 2, 3, 4, 5};for (int num : arr) {System.out.println(num);}```上述代码将会输出数组arr中的每一个元素,即1到5,每个元素占据一行。
2. 遍历二维数组当我们需要遍历二维数组时,foreach循环同样适用,示例代码如下:```Javaint[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int[] row : matrix) {for (int num : row) {System.out.print(num + " ");}System.out.println();}```上述代码将会输出二维数组matrix中的每一个元素,按照二维数组的行列顺序,每行元素之间用空格分隔,每行占据一行。
三、使用foreach循环遍历集合除了数组外,在Java中我们同样可以使用foreach循环来遍历集合类型的容器,比如List、Set等。
mybatis使⽤foreach遍历list集合或者array数组⽅式⼀、准备⼯作1.db.properties⽂件(记得修改⾃⼰的数据库和⽤户名、密码)dataSource.driver=com.mysql.jdbc.DriverdataSource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8ername=blogdataSource.password=blog2.主配置⽂件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- 引⼊外部配置⽂件--><properties resource="db.properties"></properties><!-- 别名设置,不设置时引⽤要使⽤全包名,设置后可以使⽤⾃定义别名,更加简洁 --><typeAliases><!-- 别名设置有两种,⼀种是⼀个⼀个设置,另外⼀种是设置某个包,默认别名为类名(⼤⼩写都可以,建议⼩写) --><!-- 第⼀种设置<typeAlias type="com.mybatis_er" alias="user"/>--><!-- 第⼆种设置,整个包下⾯的类都进⾏别名设置,推荐第⼆种 --><package name="com.mybatis_demo.domain"/></typeAliases><!-- 环境模式:development开发模式 work⼯作模式 --><environments default="development"><!-- 环境变量 --><environment id="development"><!-- 使⽤jdbc的事务管理 --><transactionManager type="JDBC"/><!-- 使⽤连接池 --><dataSource type="POOLED"><property name="driver" value="${dataSource.driver}"/><property name="url" value="${dataSource.url}"/><property name="username" value="${ername}"/><property name="password" value="${dataSource.password}"/></dataSource></environment></environments><!-- 引⼊mapper映射⽂件 --><mappers><!-- 1.相对路径引⼊--><!-- <mapper resource="mapper/UserMapper.xml"/> --><!-- 2.绝对路径引⼊ --><!-- <mapper url="file:\\\D:\sts-bundle\workplace\mybatis_demo\src\main\resources\mapper\UserMapper.xml"/> --><!-- 3.对应mapper接⼝全包名引⼊,需要对应的mapper.xml与接⼝mapper处于同⼀包下才可以,且xml⽂件名与接⼝名要相同,xml⽂件中的namespace必须是对应接⼝的全包名 --> <!-- <mapper class="com.mybatis_erMapper"/> --><!-- 4.包引⼊,要求跟接⼝引⼊⼀样 --><!-- <mapper resource="mapper/UserMapper2.xml"/> --><package name="com.mybatis_demo.mapper"/></mappers></configuration>3.创建User类和包装类UserVoUser.javapackage com.mybatis_demo.domain;public class User {private Integer uid;private String uname;private Integer age;private String address;public Integer getUid() {return uid;}public void setUid(Integer uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User [uid=" + uid + ", uname=" + uname + ", age=" + age + ", address=" + address + "]";}}UserVo.javapackage com.mybatis_demo.domain;import java.util.List;public class UserVo extends User {private Integer[] ids;private List<Integer> idList;public Integer[] getIds() {return ids;}public void setIds(Integer[] ids) {this.ids = ids;}public List<Integer> getIdList() {return idList;}public void setIdList(List<Integer> idList) {this.idList = idList;}}⼆、遍历数组和集合的映射⽂件和对应的接⼝1.mapper映射⽂件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mybatis_erMapper"><!-- 遍历list集合,collection="list",如果你传参的时候是直接传递list集合,那么这⾥只能填list,不能填参数名 --><select id="selectByList" resultType="User">select * from t_user where uid in<foreach collection="list" item="item" open="(" separator="," close=")">#{item}</foreach></select><!-- 遍历数组,collection="array",如果你传参的时候是直接传递数组,那么这⾥只能填array,不能填参数名--><select id="selectByArray" resultType="User">select * from t_user where uid in<foreach collection="array" item="item" open="(" separator="," close=")">#{item}</foreach></select><!-- 遍历包装类中的数组,collection="ids",这⾥不再是array,⽽是包装类中对应的变量名,因为你传递的参数是⼀个包装类,mybatis是通过get⽅法获取包装类中的数组 --><select id="selectUserVoByArray" parameterType="UserVo" resultType="User">select * from t_user where uid in<foreach collection="ids" item="item" open="(" separator="," close=")">#{item}</foreach></select><!-- 遍历包装类中的list集合,collection="idList",这⾥不再是list,⽽是包装类中对应的变量名,因为你传递的参数是⼀个包装类,mybatis是通过get⽅法获取包装类中的list集合 --> <select id="selectUserVoByList" parameterType="UserVo" resultType="User">select * from t_user where uid in<foreach collection="idList" item="item" open="(" separator="," close=")">#{item}</foreach></select></mapper>2.mapper接⼝UserMapper.interfacepackage com.mybatis_demo.mapper;import java.util.List;import java.util.Map;import com.mybatis_er;import com.mybatis_erVo;public interface UserMapper {//mybatis使⽤mapper动态代理//4⼤原则,⼀个注意//1.接⼝中的⽅法名需要与对应mapper.xml的id⼀致//2.接⼝中的返回值需要与对应mapper.xml的返回值类型保持⼀致//3.接⼝中的参数需要与对应mapper.xml的参数类型、个数、参数名保持⼀致//4.对应mapper.xml的名字空间需要修改成对应接⼝的全包名//注意:mapper动态代理根据返回值类型,mybatis会⾃动选择调⽤selectone还是selectlist.... //⽤list封装条件public List<User> selectByList(List<Integer> testlist);//⽤数组封装条件public List<User> selectByArray(Integer[] ids);//⽤包装类中的数组封装条件public List<User> selectUserVoByArray(UserVo userVo);//⽤包装类中的list封装条件public List<User> selectUserVoByList(UserVo userVo);}三、测试代码package com.mybatis_demo.test;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.mybatis_er;import com.mybatis_erVo;import com.mybatis_erMapper;public class TestMapper {//⽤包装类中的list封装条件,传递参数是⼀个包装类@Testpublic void test_selectUserVoByList() {try {//读取配置⽂件InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");//创建SqlSessionFactoryBuilder对象,⽤来获取SqlSessionFactory对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//利⽤SqlSessionFactoryBuilder对象build⼀个SqlSessionFactory对象SqlSessionFactory build = builder.build(in);//利⽤sqlSessionFactory获取session对象SqlSession session = build.openSession();//通过session对象获取对应mapper接⼝UserMapper mapper = session.getMapper(UserMapper.class);List<Integer> idList = new ArrayList<Integer>();idList.add(5);idList.add(3);idList.add(123);idList.add(19);UserVo userVo = new UserVo();userVo.setIdList(idList);List<User> users = mapper.selectUserVoByList(userVo);for (User user : users) {System.out.println(user);}} catch (IOException e) {e.printStackTrace();}}//⽤包装类中的array封装条件,传递参数是⼀个包装类@Testpublic void test_selectUserVoByArray() {try {//读取配置⽂件InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");//创建SqlSessionFactoryBuilder对象,⽤来获取SqlSessionFactory对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//利⽤SqlSessionFactoryBuilder对象build⼀个SqlSessionFactory对象SqlSessionFactory build = builder.build(in);//利⽤sqlSessionFactory获取session对象SqlSession session = build.openSession();//通过session对象获取对应mapper接⼝UserMapper mapper = session.getMapper(UserMapper.class);Integer[] ids = new Integer[]{5,9,30};UserVo userVo = new UserVo();userVo.setIds(ids);List<User> users = mapper.selectUserVoByArray(userVo);for (User user : users) {System.out.println(user);}} catch (IOException e) {e.printStackTrace();}}//⽤数组封装条件,传递参数是⼀个数组@Testpublic void test_selectByArray() {try {//读取配置⽂件InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");//创建SqlSessionFactoryBuilder对象,⽤来获取SqlSessionFactory对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//利⽤SqlSessionFactoryBuilder对象build⼀个SqlSessionFactory对象SqlSessionFactory build = builder.build(in);//利⽤sqlSessionFactory获取session对象SqlSession session = build.openSession();//通过session对象获取对应mapper接⼝UserMapper mapper = session.getMapper(UserMapper.class);Integer[] ids = new Integer[]{5,9,30};List<User> users = mapper.selectByArray(ids);for (User user : users) {System.out.println(user);}} catch (IOException e) {e.printStackTrace();}}//⽤list封装条件,传递参数是⼀个list集合@Testpublic void test_selectByList() {try {//读取配置⽂件InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");//创建SqlSessionFactoryBuilder对象,⽤来获取SqlSessionFactory对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//利⽤SqlSessionFactoryBuilder对象build⼀个SqlSessionFactory对象SqlSessionFactory build = builder.build(in);//利⽤sqlSessionFactory获取session对象SqlSession session = build.openSession();//通过session对象获取对应mapper接⼝UserMapper mapper = session.getMapper(UserMapper.class);List<Integer> list = new ArrayList<Integer>();list.add(5);list.add(3);list.add(123);list.add(19);List<User> users = mapper.selectByList(list);for (User user : users) {System.out.println(user);}} catch (IOException e) {e.printStackTrace();}}}四、总结1.如果你传参的时候直接传⼀个数组,那么使⽤foreach遍历时collection=“array”,这⾥是固定写法,即这⾥的array与你的实参名⽆关2.如果你传参的时候直接传⼀list集合,那么使⽤foreach遍历时collection=“list”,这⾥是固定写法,即这⾥的list与你的实参名⽆关3.如果你传参的时候直接传⼀个含有数组成员变量的类,那么使⽤foreach遍历时collection=“你的变量名”,这⾥不再是固定写法,即这⾥的命名取决于成员变量的变量名,例如:成员变量名是test,那么就是collection=“test”4.如果你传参的时候直接传⼀个含有list集合成员变量的类,跟3的情况⼀样以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
简述foreach循环的基本使用方式;foreach循环是一种用于遍历集合(如数组、列表、字符串等)的迭代器,通常用于在代码中重复执行某些操作,以获取集合中所有元素的值或属性。
以下是foreach循环的基本使用方式:1. 使用foreach循环遍历数组或列表:```string[] arr = { "value1", "value2", "value3" };foreach (string str in arr){Console.WriteLine(str);}```2. 使用foreach循环遍历对象或类中的属性:```class Person{public string Name { get; set; }}Person person = new Person { Name = "John" };foreach (var property in person.Properties){Console.WriteLine();}```3. 使用foreach循环遍历集合中的元素:```string[] arr = { "value1", "value2", "value3" };int[] arr2 = { 1, 2, 3 };foreach (var item in arr){Console.WriteLine(item);}foreach (var item in arr2){Console.WriteLine(item);}```除了以上基本使用方式,foreach循环还有许多高级用法,如使用变量替代数组元素、使用多个for循环等。
了解foreach循环的基本知识,可以帮助开发者更好地编写代码,并更高效地处理集合数据。
拓展:1. 使用变量替代数组元素:```string[] arr = { "value1", "value2", "value3" };int[] arr2 = { 1, 2, 3 };int index = arr.Length - 1;foreach (var item in arr){Console.WriteLine(arr[index]);index--;}foreach (var item in arr2){Console.WriteLine(arr[index]);index--;}```2. 使用多个for循环:```string[] arr = { "value1", "value2", "value3" }; int[] arr2 = { 1, 2, 3 };for (int i = 0; i < arr.Length; i++){for (int j = 0; j < arr2.Length; j++){Console.WriteLine(arr[i]);Console.WriteLine(arr2[j]);}}```以上是foreach循环的基本使用方式和高级用法,开发者可以根据不同的场景选择合适的使用方法。
java foreach使用方法Java中的foreach循环(也称为增强型for循环)是一种用于遍历数组或集合的简化语法。
它提供了一种简洁和易于理解的方式来迭代访问集合中的元素。
使用foreach循环可以避免传统的for循环中需要手动计数器和索引的麻烦。
它适用于任何实现了Iterable接口的集合类,以及具有数组和其他可迭代对象。
foreach循环的语法如下:```javafor (元素类型变量名 : 可迭代对象) {// 执行迭代操作}```在这个语法中,元素类型是指可迭代对象中元素的数据类型,变量名是指当前迭代到的元素,可迭代对象则是要进行迭代的集合或数组。
下面是一个示例,演示了如何使用foreach循环来遍历一个整型数组:```javaint[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) {System.out.println(number);}```以上代码将逐个输出数组中的元素。
在使用foreach循环时,需要注意以下几点:1. foreach循环只能用于遍历访问集合或数组中的元素,而不能用于修改集合或数组的结构。
2. foreach循环是只读的,不允许在循环体内修改当前元素的值。
3. 如果需要在循环体内改变集合或数组的元素,可以使用传统的for循环或迭代器。
总结:通过上述文章,我们了解了Java中foreach循环的使用方法。
它提供了一种简洁和易于理解的遍历集合和数组的方式。
使用foreach循环,我们可以避免手动处理索引和计数器的繁琐操作,使代码更加简洁和可读性更高。
然而,在使用foreach循环时,需要注意它的只读性和不能修改集合或数组结构的限制。
如果需要修改集合或数组的元素,应该使用传统的for循环或迭代器。
用foreach遍历集合或数组
1.1 知识能力
用foreach遍历集合或数组可以简化遍历过程。
在没有foreach以前,需要构造一个遍历器然后使用for遍历,然而foreach让其变简单了。
1.2 职业素质
掌握用foreach遍历集合或数组的技术后可以更加简洁明了地实现遍历,从而让代码更具可读性。
1.3 开发流程
在JDK5.0之前,如果要从一个Collection对象或者数组中遍历数据,需要使用类似如下的代码来实现此功能,例如,假设我们遍历一个ArrayList:
List names = new ArrayList();
names.add("alex");
names.add("tom");
names.add("jerry");
for (Iterator it = names.iterator(); it.hasNext()) {
String name = (String)it.next();
System.out.println(((String)it.next()).charAt(0));
}
而如果我们结合新的for循环和泛型,可以更加简洁的实现这个功能:List<String> names = new ArrayList<String>();
names.add("alex");
names.add("tom");
names.add("jerry");
新引入的这个循环方法基本语法如下:
for (type variable : 数组或者集合){
……
}
其中,type表示数组或者集合中保存的数据的类型,如前面ArrayList中保存的String;variable为一个变量名,这个变量用来表示从数组或者集合中获得的元素,然后是“:”,后面紧跟着想循环取出数据的数组或者集合。
foreach之所以能够对Collection有效,是因为Java SE5中引入了Iterable接口,该接口包含了一个能够产生Iterator对象的iterator()方法,并且Iterable被foreach用来在系列中移动。
因此,如果想让自己定义的类可以使用foreach,可以让它实现Iterable接口即可。
但是,在这里需要特别提醒的是,数组使用foreach的时候,并非因为数组也是一个实现Iterable的对象,这点需要注意。
1.4 项目拓展
使用foreach可以用来代替for和遍历器的组合,使得遍历代码更为简洁和具有可读性。
可以用来遍历一个数组或集合中的数据从而寻找到要目标数据。
有兴趣的读者可以将其与查找结合使用。