Collection和Map的三种不同的遍历方式

Collection的三种遍历遍历方式

Collection集合体系

Collection集合体系
Collection是一个接口,其下有两个常用的集合体系,一个是List,另一个是Set。

List系列集合:添加的元素是有序、可重复、有索引。
实现类:
ArrayList、LinekdList :有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
实现类:
HashSet: 无序、不重复、无索引;
LinkedHashSet: 有序、不重复、无索引。
TreeSet:按照大小默认升序排序、不重复、无索引。
集合初始化

 Collection<String> vehicles = new ArrayList<>();
//Set<String> vehicles = new HashSet<>();  //Set集合遍历类似,改为HashSet即可
//List<String> vehicles = new ArrayList<>();
 Collections.addAll(vehicles, "飞机", "坦克", "马车", "火车", "电车", "轻轨", "磁悬浮列车");

Collection采用Iterator进行遍历

		//1、第一种遍历方式:使用迭代器

        System.out.println("使用Iterator迭代器进行遍历:");
        Iterator<String> it = vehicles.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println("\n" + "---------------------------------");

Collection采用forEach/增强for循环进行遍历

		 //2、第二种遍历方式:增强for循环进行遍历

        System.out.println("使用增强for循环进行遍历:");
        for (String vehicle : vehicles) {
            System.out.print(vehicle + " ");
        }
        System.out.println("\n" + "---------------------------------");

		System.out.println("使用匿名内部类进行遍历:");
        vehicles.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.print(s + " ");
            }
        });
        System.out.println("\n" + "---------------------------------");

Collection采用Lambda表达式进行遍历

		//3、第三种遍历方式:Lambda表达式进行遍历
        System.out.println("使用Lambda表达式进行遍历:");
        vehicles.forEach((s) -> System.out.print(s + " "));
        System.out.println("\n" + "---------------------------------");

遍历结果:

使用Iterator迭代器进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车 
---------------------------------
使用增强for循环进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车 
---------------------------------
使用匿名内部类进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车 
---------------------------------
使用Lambda表达式进行遍历:
飞机 坦克 马车 火车 电车 轻轨 磁悬浮列车 
---------------------------------

Map的三种遍历遍历方式

Map集合体系

Map集合体系
Map是一个接口,其下有两个常用的集合体系,一个是HashMap,另一个是HashTable,其中,使用最多的是HashMap。

HashMap:元素按照键是无序,不重复,无索引,值不做要求,基于哈希表(与Map体系一致)

LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求,基于哈希表

TreeMap:元素只能按照键排序,不重复,无索引的,值不做要求,可以做排序

集合初始化:

  Map<String , Integer> phones = new HashMap<>();
        phones.put("MI_10_ULTRA",5999);
        phones.put("MI_10_PRO",4999);
        phones.put("MI_10_S",3999);//  Map集合后面重复的键对应的元素会覆盖前面重复的整个元素!
        phones.put("MI_10",3999);
        phones.put("MI_10_LITE",2999);

Map采用键找值方式进行遍历


        //第一种遍历方式:键找值,拿到集合的全部键
        //1、键找值 : 拿到集合的全部键
        Set<String> keys=phones.keySet();

        System.out.println("使用键找值方式进行遍历:");
        //2、遍历每个键,根据键提取值
        for (String key : keys) {
            int money=phones.get(key);
            System.out.println("型号:"+key+" 价格:"+money+"元");
        }
        System.out.println("\n" + "---------------------------------");

Map采用键值对方式进行遍历


        //第二种遍历方式:键值对,调用Map的方法 entrySet把Map集合转换成Set集合形式  maps.entrySet();
        // 1、把Map集合转换成Set集合  Entry可以理解为同时封装了map中的kv键值对的类
        System.out.println("使用键值对方式进行遍历:");
        Set<Map.Entry<String, Integer>> entries = phones.entrySet();
        //2、开始遍历
        for (Map.Entry<String, Integer> entry : entries) {
            String phoneName=entry.getKey();
            int price=entry.getValue();
            System.out.println("型号:"+phoneName+" 价格:"+price+"元");

        }
        System.out.println("\n" + "---------------------------------");

Map采用Lambda表达式进行遍历


       //第三种遍历方式:Lambda表达式,JDK 1.8开始之后的新技术。

        System.out.println("使用Lambda表达式进行遍历:");
        phones.forEach((k, v) ->{
            System.out.println("型号:"+k+" 价格:"+v+"元");
        });

遍历结果:

使用键找值方式进行遍历:
型号:MI_10_S 价格:3999元
型号:MI_10_PRO 价格:4999元
型号:MI_10_LITE 价格:2999元
型号:MI_10_ULTRA 价格:5999元
型号:MI_10 价格:3999---------------------------------
使用键值对方式进行遍历:
型号:MI_10_S 价格:3999元
型号:MI_10_PRO 价格:4999元
型号:MI_10_LITE 价格:2999元
型号:MI_10_ULTRA 价格:5999元
型号:MI_10 价格:3999---------------------------------
使用Lambda表达式进行遍历:
型号:MI_10_S 价格:3999元
型号:MI_10_PRO 价格:4999元
型号:MI_10_LITE 价格:2999元
型号:MI_10_ULTRA 价格:5999元
型号:MI_10 价格:3999
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值