小滴课堂-学习笔记:(9)Java进阶核心之三大集合框架拓展

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 Java集合框架遍历之迭代器(Iterator)

第2集 Java迭代器进阶和注意事项

第3集 Java集合框架之Collections工具类讲解上集

第4集 Java集合框架之Collections工具类讲解下集

第5集 Java集合框架元素排序之Comparable排序接口讲解

第6集 新版JDK之Objects 工具类实战

第7集 新版JDK之重写HashCode和Equals实战

第8集 本章课程作业练习题布置

第9集 本章课程作业常见问题和答案解析

第10集 集合框架Collection初步总结

干货文档


第1集 Java集合框架遍历之迭代器(Iterator)

简介:讲解什么是迭代器

  • 使用循环遍历集合

    • 普通for循环

    • 增强for循环

  • 什么是迭代器Iterator

    • Iterator是java中的一个接口,核心作用就是用来遍历容器的元素,当容器实现了Iterator接口后,可以通过调用Iterator()方法获取一个 Iterator对象

    • 为啥是调用容器里面的Iterator方法呢?

      • 因为容器的实现有多种,不同的容器遍历规则不一样,比如ArrayList/LinkedList/HashSet/TreeSet等,所以设计了Iterator接口,让容器本身去实现这个接口,实现里面的方法,从而让开发人员不用关系容器的遍历机制,直接使用对应的方法即可

    • 三个核心方法

      • boolean hashNext()

        • 用于判断iterator内是否有下个元素,如果有则返回true,没有则false

      • Obejct next()

        • 返回iterator的下一个元素,同时指针也会向后移动1位

      • void remove()

        • 删除指针的上一个元素(容易出问题,删除元素不建议使用容器自己的方法迭代器遍历集合

        •  

  •     public static void testSet(){
            Set<String> set = new HashSet<>();
            set.add("jack");
            set.add("tom");
            set.add("marry");
            set.add("tony");
            set.add("jack");
            Iterator<String> iterator =  set.iterator();
            while (iterator.hasNext()){
                String str = iterator.next();
                System.out.println(str);
            }
        }
    ​
    ​
        public static void testList(){
            List<String> list = new ArrayList<>();
            list.add("jack");
            list.add("tom");
            list.add("mary");
            list.add("tim");
            list.add("tony");
            list.add("eric");
            list.add("jack");
    ​
            Iterator<String> iterator =  list.iterator();
            while (iterator.hasNext()){
                String str = iterator.next();
                System.out.println(str);
            }
    ​
        }
    
    
    

     

第2集 Java迭代器进阶和注意事项

简介:详细讲解迭代器的进阶知识和注意事项

  • 迭代器是一种设计模式

  • 三个核心方法

    - boolean hashNext() 
      - 用于判断iterator内是否有下个元素,如果有则返回true,没有则false
    - Obejct next()
      - 返回iterator的下一个元素,同时指针也会向后移动1位
    - void remove()
      - 删除指针的上一个元素
      - 只有当next执行完后,才能调用remove函数
      - 如要删除第一个元素,不能直接调用 remove(),要先next一下()否则调用remove方法是会抛出异常的

     

  • 迭代器遍历元素时不能通过Collection接口中的remove方法删除元素,只能用Iterator的remove方法删除元素; 原因 某个线程在 Collection 上进行迭代时,不允许另一个线程修改该 Collection

public static void testList(){
        List<String> list = new ArrayList<>();
        list.add("jack");
        list.add("tom");
        list.add("mary");
        list.add("tim");
        list.add("tony");
        list.add("eric");
        list.add("jack");
​
        Iterator<String> iterator =  list.iterator();
        while (iterator.hasNext()){
            String str = iterator.next();
            if("jack".equals(str)){
                list.remove(str);//ConcurrentModificationException并发修改异常
            }
            System.out.println(str);
        }
​
    }
  • 迭代出的对象是引用的拷贝,如果修改迭代中的元素,那么就是修改容器对象的本身

  • 和for循环对比

    • for循环适合顺序访问,或者通过下标进行访问的

    • 迭代器适合链式结构

    • 最终看使用场景,性能会有轻微差别,但是可以忽略

 

 

 

第3集 Java集合框架之Collections工具类讲解上集

简介:讲解Java集合工具类Collections讲解上集

  • Collections工具类

    • Java里关于集合的工具类,包含有各种有关集合操作的静态多态方法,不能实例化(把构造函数私有化)

      • public class Collections {
            // Suppresses default constructor, ensuring non-instantiability.
            private Collections() {
            }

 

  • 和Collection的区别

    • Collection是接口,提供了对集合对象进行基本操作的通用接口方法,List、Set等多种具体的实现类

    • Collections是工具类,专门操作Collection接口实现类里面的元素

 

  • 常见方法

    • 排序 sort(List list)

      • 按自然排序的升序排序

                List<String> list = new ArrayList<>();
                list.add("aaaa");
                list.add("zzz");
                list.add("gggg"); 
                System.out.println(list);
                Collections.sort(list);
                System.out.println(list);

         

      • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值