• 集合的父亲之collection----(单列集合顶级接口)和遍历方式


    目录

    前言必读

    一、概念

    1.关系网图

    2.区别

    二、代码例子

    使用场景选择:

    四、set迭代器遍历

    1.为什么要用set迭代器遍历?

    2.迭代器是什么?

    3.迭代器注意事项

    例子展示:

     五、增强for遍历(迭代器升级版)

    格式:

    例子展示:

    六、lambda表达式遍历(超进化遍历)


    前言必读

    读者手册(必读)_云边的快乐猫的博客-CSDN博客

    一、概念

    collection:单列集合的祖宗,一次只能往集合里面添加一个元素

    1.关系网图

    红色:接口

    蓝色:实现类

    2.区别

    List系列的集合:添加的元素是有序的、可重复的、有索引的

    set系列反之:无序、不可重复、无索引的

    名词解释:

    有序:指存和取顺序一样。和大小排列等无关

    可重复:元素可以重复相同

    有索引:可以通过索引找到

    二、代码例子

    1. package bao;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. public class Test {
    5. public static void main(String[] args) {
    6. //注意点:collection是一个接口,不能直接创建他的对象.现在为了更直观的学习,创建他实现类的对象来展示,比如ArrayList
    7. Collection coll = new ArrayList<>();
    8. //collection最常见的6个方法
    9. //1.添加元素
    10. //注意点:要往List系列添加元素,永远都是true,因为这个集合是允许元素重复的。而set就不一定了
    11. coll.add("小狗");
    12. coll.add("大狗");
    13. System.out.println(coll);//[小狗, 大狗]
    14. //2.删除
    15. //注意点:因为collection里面定义的是共性的方法,不能通过索引进行删除,只能通过元素的对象进行删除
    16. //删除元素存在则true,不存在则false
    17. coll.remove("大狗");
    18. System.out.println(coll);//[小狗]
    19. //3.判断元素是否存在
    20. //注意点:这个方法底层是通过equals来进行判断的。
    21. //如果这个集合new的是自定义对象,比如student这种,要进行重写里面的方法才能返回true。
    22. boolean bl = coll.contains("as");
    23. System.out.println(bl);//false
    24. //4.判断集合是否为空
    25. //底层就是判断这个集合元素长度是否为0
    26. boolean is = coll.isEmpty();
    27. System.out.println(is);//false
    28. //5.获取集合的长度
    29. int size = coll.size();
    30. System.out.println(size);//1
    31. //6.清空
    32. coll.clear();
    33. System.out.println(coll);//[]
    34. }
    35. }

    运行结果:

     [小狗, 大狗]
    [小狗]
    false
    false
    1
    []

    ------------------------------------------------------------------------------------------遍历方式------------------------------------------------------------------------------

    使用场景选择:

    1.在遍历的过程中需要删除元素------迭代器

    2.仅仅想遍历可以选择增强for或者lambda

    四、set迭代器遍历

    1.为什么要用set迭代器遍历?

    答:因为set集合里面是没有索引的,用不了for循环去遍历,只能用迭代器方式去遍历。 

    2.迭代器是什么?

    答:迭代器是集合专用的遍历方式,不依赖索引进行遍历

    3.迭代器注意事项

    1.迭代器遍历完成,指针不会复位

    2.循环中只能用一次next方法

    3.迭代器遍历时,不能用集合的方式进行增加和删除

    4.报错:NoSuchElementException

    4.遍历完成后还想再进行二次遍历怎么办?

    答:再创建一个迭代器去遍历

    例子展示:

    1. package bao;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. import java.util.Iterator;
    5. public class Test {
    6. public static void main(String[] args) {
    7. Collection coll = new ArrayList<>();
    8. //1.添加元素
    9. coll.add("霹雳火");
    10. coll.add("急先锋");
    11. //2.创建迭代器对象,迭代器就像一个箭头,默认初始值为0索引
    12. Iterator it = coll.iterator();
    13. //3.开始进行循环获取元素
    14. while (it.hasNext()){//判断元素是否存在,存在则执行下一步
    15. String next = it.next();//next获取元素并移动指针
    16. System.out.println(next);//霹雳火 急先锋
    17. }
    18. //迭代器总结:创建iterator方法,通过while循环,用next进行遍历
    19. //二、错误示范
    20. //1.遍历完成后再调用一次next方法,会报错NoSuchElementException异常
    21. //直白解释:都遍历完成了,还要再next指向后一位没有元素的空位置,肯定会报错的
    22. String next = it.next();
    23. System.out.println(next);//报错:NoSuchElementException
    24. }
    25. }

    运行结果:(这里是把错误示范注释掉了,要不然会报错)

    霹雳火
    急先锋

     五、增强for遍历(迭代器升级版)

    1.增强for遍历底层就是迭代器,为了简化迭代器书写而产生的

    2.他是JDK5以后才出现的,其内部原理就是一个Iterator迭代器

    3.所有的单列集合和数组才能使用

    格式:

    for(元素的数据类型  变量名:数组或者集合){

    //打印输出

    }

    例子展示:

    1. package bao;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. public class Test {
    5. public static void main(String[] args) {
    6. Collection coll = new ArrayList<>();
    7. //1.添加元素
    8. coll.add("霹雳火");
    9. coll.add("急先锋");
    10. //快捷键:集合变量名.for+回车键
    11. for (String s : coll) {
    12. System.out.println(s);
    13. }
    14. }
    15. }

     运行结果:

    霹雳火
    急先锋

    六、lambda表达式遍历(超进化遍历)

    1. package bao;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. public class Test {
    5. public static void main(String[] args) {
    6. Collection coll = new ArrayList<>();
    7. //1.添加元素
    8. coll.add("霹雳火");
    9. coll.add("急先锋");
    10. coll.forEach(s -> System.out.println(s));
    11. //快捷方式:1.coll.forEach,2.括号里面输入s+回车 3.打印输出变量s
    12. }
    13. }

      运行结果:

    霹雳火
    急先锋

  • 相关阅读:
    Pandas合并excel表格的两种方式
    uniapp H5生成画布,插入网络图片。下载画布
    Go-知识测试-Main测试
    vue真实项目还原
    Python中的多态和封装是如何实现的
    SpringCloud Alibaba微服务实战一 - 基础环境准备
    【TIM定时器】
    HarmonyOS-使用router事件跳转到指定UIAbility
    Difference quotient
    CICD:github actions 实现CICD
  • 原文地址:https://blog.csdn.net/m0_52861000/article/details/126588979