码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaSE——Collection迭代器的使用及源码分析、集合删除元素、Collection常用方法


    了解这篇文章之前可以先看看我们之前学的集合继承图,会让我们的理解更加的深刻

    JavaSE——集合、集合继承结构图_我爱布朗熊的博客-CSDN博客

    目录

    一、Collection接口中的常用方法(子接口都可用)

    1.1  add() 往集合中添加元素

    1.2  size()  获取集合中元素的个数

    1.3  clear() 移除collection中所有的元素(清空集合)

    1.4 contanis()  判断当前集合中是否包含某个元素

    1.5 remove()  删除集合中的某个元素

    1.6  isEmpty() 判断集合是否是空

    1.7  toArray() 将集合转化成为一个数组

    二、Collection集合迭代(遍历)

    2.1 迭代器使用程序

    2.2 迭代器原理图

    三、Collection中 contains方法

      3.1  contains方法源码分析remove方法源码分析

      3.2  remove方法源码分析

    四、Collection集合删除元素



    一、Collection接口中的常用方法(子接口都可用)

    存放在集合中的类型,一定要重写equals方法,下面我们会在contains方法中解释

    Collection中能存放什么元素?

        没有使用泛型之前,Collection中可以存储Object所有的子类型

        使用了泛型之后,Collection中智能存储某个具体的类型

        集合中不能直接存储基本数据类型,也不能存储java对象,只是存储java对象的内存地址

    1.1  add() 往集合中添加元素

      这个地方是自动装箱了:Integer x = new Integer(1200);

    1. Collection c = new ArrayList();
    2. c.add(1200);
    3. c.add(true);
    4. c.add(new Object());

        

    1.2  size()  获取集合中元素的个数

    c.size();

    1.3  clear() 移除collection中所有的元素(清空集合)

    c.clear();

    1.4 contanis()  判断当前集合中是否包含某个元素

    会返回一个boolean类型,包含的话返回true

    下面我们会对这个方法进行详解

      c.contains("绿巨人");

    1.5 remobe  删除集合中的某个元素

    c.remove(1200)

    1.6  isEmpty() 判断集合是否是空

    true 代表空

      c.isEmpty();

    1.7  toArray() 将集合转化成为一个数组

        Object[] s= c.toArray();

    二、Collection集合迭代(遍历)

    2.1 迭代器使用程序

     什么时候获取迭代器?

          当我们的元素全部添加进入集合的时候,再获取迭代器,因为只要集合结构发生改变,迭代器必须重新获取

    我们可以通过下面文章的Collection集合继承图来详细查看集合迭代到底是怎么调用的

    JavaSE——集合、集合继承结构图_我爱布朗熊的博客-CSDN博客

    下面的方法是在Collection以及子类中使用:

    it.hasNext()  表示如果仍有元素可以迭代,则返回true(返回值是boolean)

    it.next()        表示返回迭代的下一个元素(返回值是Object)

    1. // 创建集合对象
    2. Collection c= new ArrayList();
    3. c.add("abcd");
    4. c.add(new Object());
    5. c.add(100);
    6. // 第一步:获取迭代器
    7. Iterator it = c.iterator();
    8. // 第二步:开始迭代
    9. while (it.hasNext()){
    10. System.out.println(it.next());
    11. }

    2.2 迭代器原理图

    在集合中存储的并不是java对象,而是内存地址,下面为了好理解,我们就先这么画

    三、Collection中 contains方法

      3.1  contains方法源码分析remove方法源码分析

     当我们查看contains方法的时候,我们发现底层调用了equals方法,如下图所示:

    图中的o就是我们代码中的x,es[i]就是我们集合中的元素,并且String的equals方法已经给我们重写了

    图示解析:

    集合c

    如果重写了equals方法的话,contains方法会直接比较比较内容,所以最终的输出结果是true

    如果没有重写equals方法的话,比较的就是内存地址(所以放在集合中的元素,尽量重写equals方法)

       

      3.2  remove方法源码分析

    当我们删除s2的时候,会不会吧s1给删除掉

    详细课查看下面这个文章

    JavaSE——集合删除元素以及remove()方法解析_我爱布朗熊的博客-CSDN博客_java中remove方法

    四、Collection集合删除元素

    详细可以查看下面这一篇文章,说明了在删除集合中元素的时候,应该调用迭代器的remove方法而不是Collection集合的remove方法

    JavaSE——集合删除元素以及remove()方法解析_我爱布朗熊的博客-CSDN博客_java中remove方法

  • 相关阅读:
    父爱的表达方式
    Servlet工作原理
    【SAP-ABAP】-权限批导-批量分配角色给具体用户
    2021中国自动驾驶环卫场景商业化应用研究报告
    三力四总线,为智能世界画一张蓝图
    Educational Codeforces Round 138 (Rated for Div. 2) B. Death‘s Blessing
    使用HttpServlet开发web应用
    类与对象---砥柱代码练习篇(c++)
    【UT】如何进行单元测试
    新款FTP替代系统重磅登场!怎样摆脱传统FTP弊端?
  • 原文地址:https://blog.csdn.net/weixin_51351637/article/details/127412753
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号