Collection

Collection

为什么需要Collection

  1. Java是面向对象的语言,需要处理多个对象
  2. 既然处理多个对象,就要将它们存储起来
  3. 存储对象,就会想到容器(集合)(Conllection)
  4. 想到容器,常用的容器其实是有的,那就是数组,但是长度不可变!
  5. 所以有了集合

此处描述

Q:为什么要提出Java集合的概念(诸如此类的问题)

A:因为Java是一门面向对象的语言,就要频繁操作多个对象,所以就要将对象存储起来,虽然有数组这种容器了,但是它长度不可变,用起来不方便,所以出现了集合

数组和集合的区别

  1. 长度的区别

    • 数组的长度不可变
    • 集合的长度可变
  2. 元素类型的区别

    • 数组可存储基本的数据类型、引用数据类型

    • 集合只可以存储引用数据类型,如果存储基本类型,会自动装箱成Integer

      image-20210720150304322

Conllection的由来与功能

  1. Conllection的由来

    1. 集合可以存储多个元素,但是这些元素我们都有不同的需求

      • 多个元素不可以相同
      • 能够按照某种规则进行排序
      • ……………………等等
    2. 对不同的需要,Java提供了不同的集合类,多个集合类的数据结构不同,但并不关心数据结构,只关心能够存取,满足需要即可

    3. 最终,将集合的所有共性抽取成一个继承体系,最大的父级就是 Conllection

      image-20210720152310539

    4. 继承体系就是

      image-20210720153333326

    5. Conllection的基础功能

      1. 添加

        • Boolean add(Object obj); // 添加一个元素
        • Boolean addAll(Conllection c); //添加一个集合的元素
      2. 删除

        • void clear(); // 移除所有的元素
        • Boolean remove(Object); //移除一个元素
        • Boolean removeAll(Connection c);
          // 移除一个集合的元素,包含于c的元素都将被移除,移除>=1即true
      3. 判断

        • Boolean contains(Object o); // 判断一个元素是否包含于集合
        • Boolean containsAll(Collection c);// 判断一个集合是否包含另一个集合,只有全部元素都在才叫包含
        • Boolean isEmpty();// 判断集合是否为空
        • Iterator<E> iteator(); // 迭代器
        • int size(); // 元素的个数
        • Boolean retainAll(Collection c);// 交集结果存放到A中
          Collection A = new ArrayList();
          A.add("a");
          A.add("b");
          A.add("c");
          A.add("d");
          System.out.println("集合A");
          for (Object o : A) {
          System.out.println(o);
          }
          Collection B = new ArrayList();
          B.add("c");
          B.add("d");
          B.add("e");
          B.add("f");
          System.out.println("集合B");
          for (Object o : B) {
          System.out.println(o);
          }
          boolean b = A.retainAll(B);
          if (b) {
          System.out.println("集合A交B");
          for (Object o : A) {
          System.out.println(o);
          }
          }

    迭代器(Iterator)

    1. 概念

      1. 是集合遍历的一种方式
      2. 依赖于集合而存在的?Collection extends Iterable -> 里面存在一个迭代器对象
    2. 用法实现

      Collection A = new ArrayList();
      A.add("a");
      A.add("b");
      A.add("c");
      A.add("d");
      System.out.println("集合A的迭代器的遍历方式");
      // 拿到 集合 A 的迭代器对象
      Iterator iterator = A.iterator();
      while (iterator.hasNext()) {
      Object next = iterator.next();
      System.out.println(next.toString());
      }
    3. 步骤总结

      1. 根据集合获取迭代器对象

        Iterator iterator = A.iterator();
      2. 通过迭代器的hasNext()方法来判断,集合是否有元素(一般情况下,在while循环里使用)

      3. 通过next()获取元素并且将"指针"移动到下一个位置

    4. 面试问题

      1. 迭代器为什么定义成接口,而不是类

          1. 集合的数据结构五花八门List Set LinkedList ……

            如果定义成类,我们自己new一个迭代器对象调用其方法来遍历

            但数据结构不同,并且集合java还是有升级的趋势的,所以让迭代器与集合本身联系到一起

            而不是很麻烦的去写一些重载,这也是面向对象程序设计的抽象手段

posted @   触碰A阳光  阅读(116)  评论(0编辑  收藏  举报
编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· MQ 如何保证数据一致性?
点击右上角即可分享
微信分享提示