迭代器和增强for的使用


   集合嵌套和增强for可以大幅降低程序员的编程压力,这里就这两个方法的使用做一个简单介绍:
引入案例迭代器和泛型结合使用:
/*
 * 泛型的通配符
 *   两个集合分别采用ArrayList和LinkedList并采用不同的数据类型
 *    ArrayList,泛型String
 *    LinkedList,泛型Integer
*   定义1个方法,能否同时迭代2个集合
 *   设计通配符,匹配所有的泛型 ?
 */
import java.util.*;
public class GenericDemo {
public static void main(String[] args) {
//创建ArrayList集合,泛型String
ArrayList<String> array = new ArrayList<String>();
array.add("abc1");
array.add("abc2");
//创建LinkedList集合,泛型Integer
LinkedList<Integer> link = new LinkedList<Integer>();
link.add(123);
link.add(456);

iterator(array);
iterator(link);
}
/*
* 定义1个方法,同时可以迭代这2个集合
* 方法参数是List接口,所有的List接口实现类,都是可以传递
* 传递的参数类型List其实是ArrayList和LinkedLIst的父类
* 这个看集合框架就可以知道
*/
public static void iterator(List<?> lit){
//获取迭代器对象
Iterator<?> it = lit.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}


上面案例中迭代器和泛型相结合,采用父类和通配符,将两个不同类型的集合统一进行了遍历,是不是可以节省一些编程时间呢?
下面我们再来看一个增强for的使用案例
案例:
import java.util.*;
/*
 *  5 集合嵌套,自己写迭代器 
 */
class Test2 {
public static void main(String[] args) {
// 这是一个集合嵌套,array是外层集合
ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>();
// 定义内层集合
ArrayList<String> a1 = new ArrayList();
ArrayList<String> a2 = new ArrayList();
ArrayList<String> a3 = new ArrayList();
ArrayList<String> a4 = new ArrayList();
// 给内层集合添加元素
a1.add("1,2");
a1.add("3,4");
a2.add("2");
a3.add("3");
a4.add("4");
// 将内层集合作为元素添加到外层集合
array.add(a1);
array.add(a2);
array.add(a3);
array.add(a4);
// for增强遍历外层集合外层为集合,用ArrayList接收
// 增强for书写格式 for(接收数据类型 变量名 : 数组或者集合){}
for (ArrayList<String> list : array) {
// for增强遍历内层集合,内层集合元素为String,用String接收
for (String str : list)
System.out.println(str);
}
// 因为构造器在使用中会有next游标指向问题,在这里尝试了几次都没有成功,
// 如果有好的建议的朋友敬请提出宝贵意见
// Iterator<ArrayList<String>> it=array.iterator();
// Iterator<String> it2=it.next().iterator();
// while(it.hasNext()){
// System.out.println(it.next());
// Iterator<String> it2=it.next().iterator();
// while(it2.hasNext())
// System.out.println(it2.next());
// }


}
}  


    这个案例一个重要的地方就在于对嵌套集合使用了遍历,可以单个遍历集合,可以遍历内层每个集合的元素,这就是for的强大之处,但是笔者在使用迭代器的时候却怎么也无法实现,如果有好的建议请大家留言谢谢!





如有不足,敬请指正。
感谢来访,分享无价!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值