【Java编程】Foreach对数组、Collection对象、Iterable对象的遍历
来源:互联网 发布:淘宝怎样投诉盗图 编辑:程序博客网 时间:2024/05/17 04:20
1、foreach介绍及其使用范围
foreach语句是java5的新特征之一,在遍历数组、集合、Iterable对象方面,为开发人员提供了极大的方便。foreach语句是for语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(不用怕数组越界)。foreach语法支持对数组、Collection对象、Iterable对象的遍历。
2、foreach适用于对数组遍历
String[] array = {"A","B","C","D","E","F","G"};for(String str:array){System.out.print(str+" ");}
3、foreach适用于对Collection对象遍历
import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.HashSet;import java.util.LinkedHashSet;import java.util.LinkedList;import java.util.TreeSet;public class ForeachDemo {public static void main(String[] args) {String[] array = {"A","A","B","E","F","G","C","D"};Collection<String> list = new ArrayList<String>(Arrays.asList(array));for(String str:list){////按照被添加的顺序保存对象System.out.print(str+" ");}System.out.println();Collection<String> linkedList = new LinkedList<String>(Arrays.asList(array));for(String str:linkedList){//按照被添加的顺序保存对象System.out.print(str+" ");//A A B E F G C D }System.out.println();Collection<String> hashSet = new HashSet<String>(Arrays.asList(array));for(String str:hashSet){//无重复,无序,存储顺序并无实际意义System.out.print(str+" ");//D E F G A B C }System.out.println();Collection<String> treeSet = new TreeSet<String>(Arrays.asList(array));for(String str:treeSet){//无重复,按照比较结果的升序保存对象System.out.print(str+" ");//A B C D E F G }System.out.println();Collection<String> linkedHashSet = new LinkedHashSet<String>(Arrays.asList(array));for(String str:linkedHashSet){//无重复,按照被添加的顺序保存对象System.out.print(str+" ");//A B E F G C D }}}
代码优化,利用上转型抽象出公共方法:
public static void forEachCollection(Collection<String> colleciton){for(String str:colleciton){////按照被添加的顺序保存对象System.out.print(str+" ");}System.out.println();}测试用例:
public static void listCollection() {String[] array = {"A","A","B","E","F","G","C","D"};forEachCollection(new ArrayList<String>(Arrays.asList(array)));//A A B E F G C D forEachCollection(new LinkedList<String>(Arrays.asList(array)));//按照被添加的顺序保存对象 //A A B E F G C D forEachCollection(new HashSet<String>(Arrays.asList(array)));//无重复,无序,存储顺序并无实际意义//D E F G A B C forEachCollection(new TreeSet<String>(Arrays.asList(array)));//无重复,按照比较结果的升序保存对象//A B C D E F G forEachCollection(new LinkedHashSet<String>(Arrays.asList(array)));//无重复,按照被添加的顺序保存对象//A B E F G C D }
3.1、利用迭代遍历Collection对象:
import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.LinkedList;import java.util.TreeSet;public class ForeachDemo {public static void printCollection(Collection<String> colleciton){Iterator<String> it = colleciton.iterator();while(it.hasNext()){System.out.print(it.next()+" ");}System.out.println();}public static void main(String[] args) {String[] array = {"A","A","B","E","F","G","C","D"};printCollection(new ArrayList<String>(Arrays.asList(array)));//A A B E F G C D printCollection(new LinkedList<String>(Arrays.asList(array)));//按照被添加的顺序保存对象 //A A B E F G C D printCollection(new HashSet<String>(Arrays.asList(array)));//无重复,无序,存储顺序并无实际意义//D E F G A B C printCollection(new TreeSet<String>(Arrays.asList(array)));//无重复,按照比较结果的升序保存对象//A B C D E F G printCollection(new LinkedHashSet<String>(Arrays.asList(array)));//无重复,按照被添加的顺序保存对象//A B E F G C D }}
4、foreach适用于对Iterable对象遍历:
package com.andieguo.iterabledemo;import java.util.Iterator;public class IteratorSequence<T> {private T[] array = null;public IteratorSequence(T[] array){this.array = array;}public Iterable<T> iterator(){//Iterable能够用于foreachreturn new Iterable<T>(){@Overridepublic Iterator<T> iterator() {// TODO Auto-generated method stubreturn new Iterator<T>() {private int index = 0;@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn index < array.length;}@Overridepublic T next() {// TODO Auto-generated method stubreturn array[index++];}@Overridepublic void remove() {// TODO Auto-generated method stubthrow new UnsupportedOperationException();}};}};}public static void main(String[] args) {IteratorSequence<String> iteratorSequence = new IteratorSequence<String>(new String[]{"A","B","C"});for(String str:iteratorSequence.iterator()){//iteratorSequence.iterator()返回的是一个Iterable<T>实例,支持foreach循环System.out.print(str+" ");}}}
- 【Java编程】Foreach对数组、Collection对象、Iterable对象的遍历
- 【Java编程】foreach支持集合、Collection、Iterable遍历原因分析
- java8提供的新遍历java.lang.Iterable.forEach
- Java遍历数组对象的方式
- JavaScript写一个能遍历对象和数组的通用forEach函数
- Java类似C#的foreach数组遍历
- jq遍历对象,Jquery遍历对象,用forEach遍历对象
- Java Collection Iterable Iterator
- 注意对Collection对象的封装
- mybatis foreach方法遍历对象
- java基础巩固系列(九):持有对象之间的使用与关系(Iterable、Collection、List、Queue、Set、Map、Stack)
- 把传过来的Object对象转换成Collection类型的对象。isArray()方法,判定此Class对象是否表示一个数组类。java.lang.reflect.Array 对任意数组进行操作
- Angular中forEach 对象数组
- php中foreach遍历类对象的总结
- jsp页面用以foreach遍历一个属性的对象出错
- <c:forEach 遍历集合中的集合的对象属性参数
- foreach处理对象数组和处理一般数组的区别
- java和js中遍历数组和对象的总结
- Mac OSX 快捷键&命令行
- 广发证券招聘linux运维的要求
- hibernate4整合spring3.1出现java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider
- COMMAND 与 UPDATE_COMMAND_UI区别——MFC
- sort()
- 【Java编程】Foreach对数组、Collection对象、Iterable对象的遍历
- [google面试CTCI] 1-6.图像旋转问题
- mstsc远程登录终端超出最大连接数的解决办法
- C语言面向对象的实现---继承性
- C#中类的继承
- android的property属性
- mfc双击按钮时出现重载xxxx函数已经存在问题
- Lightoj 1038 概率DP
- 检查Pthreads函数的返回值