foreach语法
来源:互联网 发布:装修空气检测 知乎 编辑:程序博客网 时间:2024/05/12 20:19
foreach语法
1.foreach用于数组:
Java SE5 引入了一种新的更加简洁的for语法用于数组和容器,,即foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。
例如,假设有一个float数组,我们要选取该数组中的每一个元素:
public class ForEachFloat {public static void main(String[] args) {int[] a=new int[10];for(int i=0;i<10;i++){a[i]=i;}for(int i:a)System.out.println(i);}}
2.foreach用用于任何Iterable对象
到目前为止,foreach主要用于数组,但是它也可以用于任何Collection对象。你实际上看到的很多使用ArrayList时用到的是它的示例,下面是一个更通用的证明:
public class ForEachCollections {public static void main(String[] args) {Collection<String> cs=new ArrayList<String>();Collections.addAll(cs, "nihao zhongguo welcome".split(" "));for(String s:cs)System.out.println(s);}}
由于cs是一个Collectio,所以这段代码展示了能够与foreach义气工作是所有的Collection对象的特性。至所以能够工作,是因为Java SE5引入了新的被称为Iterable的接口,该接口包含一个能够产生Iterator的iterator()方法,并且Iterable接口被foreach用来在序列中移动,因此如果你创建了产生任何Iterable的类,都将可以将他用于foreach与剧中:
public class IterableClass implements Iterable<String>{private String[] s="welcome to china".split(" ");@Overridepublic Iterator iterator() {// TODO Auto-generated method stubreturn new Iterator(){int count=0;@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn count<s.length;}@Overridepublic Object next() {// TODO Auto-generated method stubreturn s[count++];}@Overridepublic void remove() {// TODO Auto-generated method stubthrow new UnsupportedOperationException();}};}public static void main(String[] args) {for(String s:new IterableClass())System.out.println(s);}}
Iterator()方法返回的是实现了Iterator<String>的匿名内部类的实例,该匿名内部类可以遍历数组中的所有单词,在main()中,你可以看到IterableClass确实可以用于foreach语句中。
在java SE5中大量的类都是Iterable类型,主要包括所有的Collection类(但是不包括各种MAP).例如,下面的代码可以显示所有的操作系统环境变量:
public class EnvironmentVariables {public static void main(String[] args) {for(Map.Entry entry:System.getenv().entrySet()){System.out.println(entry.getKey()+":"+entry.getValue());}}}
System.getntenv()返回一个map,entrySet()产生一个由Map.Entry元素构成的Set,并且这个Set是一个Iterable,因此他可以用于foreach循环。
Foreach语句可以用于数组和任何其他的Iterable,但是这并不意味着数组肯定是个Iterable,而任何自动包装也不会自动发生:
public class ArrayIsNotIterable {static<T> void test(Iterable<T> tb){for(T t:tb)System.out.println(tb);}public static void main(String args){test(Arrays.asList(1,2,3));String[] strings={"a","b","c"};//An array works in foreach ,but it's not Iterable//!test(strings);test(Arrays.asList(strings));}}
- ForEach 语法
- foreach语法
- foreach语法
- Java Foreach语法
- <c:forEach> 语法
- 【programming pig】foreach语法
- javascript的Foreach语法
- javascript的Foreach语法
- 【ThinkingInJava】3、Foreach语法
- jsp forEach语法
- mybatis foreach语法
- forEach循环es6语法
- Java | foreach语法
- jdk5.0 中的foreach语法
- Java语法糖之foreach
- Java foreach语法糖探秘
- Java语法糖之foreach
- asp.net 中 foreach 语法
- (笔记)涉及到的WinAPI函数
- jdk1.8中HashMap是如何维护EntrySet的
- 使用vs2013或vs2015 编译ffmpeg
- linux系统下禁止使用ssh登陆,但是可以使用sftp登陆实现详解
- UCC assert文件
- foreach语法
- 检测某一个网页下localStorage的剩余容量
- 通过cookie访问页面
- 小白带你学习C++(2)This指针的引用
- kubernetes资源对象--Service
- 读取系统联系人
- struts2的ActionContext与 ServletActionContext区别与使用场景
- 关于移动端样式处理
- 【Arduino】自动发报机(雾...