1-集合先容

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

1-集合先容

先容汇总:

  • 为啥要使用集合
  • 集合的框架体系
  • Collection方法
1-为啥要使用集合


  • 之前生存多个数据使用的是数组,那么数组有不敷的地方,如下

    • 长度开始时必须指定,而且一旦指定,不能更改
    • 生存的必须为同一范例的元素(可以使用多态,生存多种范例数据)
    • 数组进行扩容比较麻烦,添加或删除元素比较麻烦

  • 那么集合可以带来怎样的利益呢

    • 可以动态生存任意多个对象,使用比较方便(有主动扩容机制)
    • 提供了一系列方便的操纵对象的方法:add、remove、set、get等
    • 集合添加或删除新元素比较容易

2-集合的框架体系


  • Java的集合类主要分为两大类

    • 单列集合

    从图中可以得出,Collection 接口有两个重要的子接口 List、Set ,其实现的子类都是单列集合,存放的元素都是一个,而且 List 是有序的,Set 是无序的。

    • 双列集合

    从图中可以得出,Map 接口的实现子类都是双列集合,存放的元素是两个,为 K-V。

3-Collection方法


  • Collection 接口常用方法
  1.         // 创建一个类型为数组列表的列表对象
  2.         List list = new ArrayList();
  3.         // 添加单个元素
  4.         list.add("吴彦祖");
  5.         list.add("彭于晏");
  6.         list.add("杨洋");
  7.         list.add(89586);
  8.         System.out.println("====列表中的元素有" + list + "====");
  9.         // 删除指定元素
  10.         list.remove("吴彦祖");
  11.         System.out.println("====列表中的元素有" + list + "====");
  12.         // 查找某个元素是否被存在
  13.         boolean result = list.contains("吴彦祖");
  14.         if (result) {
  15.             System.out.println("====目标元素存在====");
  16.         } else {
  17.             System.out.println("====目标元素不存在====");
  18.         }
  19.         // 获取元素个数
  20.         System.out.println("====列表中元素个数为" + list.size());
  21.         // 判断列表是否为空
  22.         if (list.isEmpty()) {
  23.             System.out.println("====列表为空====");
  24.         } else {
  25.             System.out.println("====列表不为空====");
  26.         }
  27.         // 清空列表中的数据元素
  28.         list.clear();
  29.         if (list.isEmpty()) {
  30.             System.out.println("====列表为空====");
  31.         } else {
  32.             System.out.println("====列表不为空====");
  33.         }
  34.         // 列表中添加多个元素
  35.         ArrayList arrayList = new ArrayList();
  36.         arrayList.add("水浒传");
  37.         arrayList.add("三国演义");
  38.         arrayList.add("红楼梦");
  39.         list.addAll(arrayList);
  40.         System.out.println("====列表中的元素有" + list + "====");
  41.         // 查找多个元素是否都存在
  42.         list.add("西游记");
  43.         boolean containsedAll = list.containsAll(arrayList);
  44.         if (containsedAll) {
  45.             System.out.println("====目标元素存在====");
  46.         } else {
  47.             System.out.println("====目标元素不存在====");
  48.         }
  49.         // 删除多个元素
  50.         arrayList.remove("红楼梦");
  51.         list.removeAll(arrayList);
  52.         System.out.println("====列表中的元素有" + list + "====");
复制代码

  • Collection 接口遍历元素

    • 方式1:使用 Iterator(迭代器)

      • Iterator 基本先容


      • Iterator 对象称为迭代器,主要用于遍历 Collection 集合中的元素。
      • 所有实现了 Collection 接口的集合类有一个 iterator 方法,该方法返回一个实现了  Iterator 接口的对象,即可以返回一个迭代器。
      • Iterator 的所有方法


      • 迭代器的执行原理

      迭代器执行大致过程为:通过 hasNext 方法判断是否还有下一个元素,有的话则调用 next 方法,如上图所示,会把指针下移,然后将指针下移以后所指的集合位置上的元素返回。一样平常会搭配 while 函数来完成该遍历过程。
      注:在调用 next 方法前必须调用 hasNext 方法进行判断,若不调用,则下一条记录无效,直到 next 方法抛出 NoSuchElementException 异常。

      • Iterator 仅用于遍历集合,其本身并不存放对象。
      • 实践练习
      1. Collection collection = new ArrayList();
      2.         collection.add(new Book("三国演义","罗贯中",10.1)) ;
      3.         collection.add(new Book("小李飞刀","古龙",5.1)) ;
      4.         collection.add(new Book("红楼梦","曹雪芹",34.6)) ;
      5.         // 获取一个迭代器
      6.         Iterator iterator = collection.iterator();
      7.         System.out.println("<<<<==============>>>>");
      8.         // 迭代器遍历集合
      9.         while (iterator.hasNext()) {
      10.             Object next =  iterator.next();
      11.             System.out.println("====迭代元素为" + next + "====");
      12.         }
      13.         // 迭代器遍历到集合最后一个元素时,继续调用 next() 方法,会抛出 NoSuchElementException 异常
      14.         // 要想继续遍历,重新获取一个新的迭代器
      15.         // 因为当前是数组列表,所以迭代器无法返回最初位置继续遍历,只能重新获取一个新的迭代器
      16.         iterator = collection.iterator() ;
      17.         System.out.println("<<<<==============>>>>");
      18.         // 迭代器遍历集合
      19.         while (iterator.hasNext()) {
      20.             Object next =  iterator.next();
      21.             System.out.println("====迭代元素为" + next + "====");
      22.         }
      复制代码
    • 方式2:增强 for 循环

      • 基本语法
      1. for ( 元素类型 元素名 : 集合名或数组名 ) {
      2.     访问元素
      3. }
      复制代码

      • 特点:增强 for 循环就是简化版的 iterator ,本质一样,只能用于遍历集合或数组
      • 实践练习
      1. Collection collection = new ArrayList();
      2.         collection.add(new Book("三国演义","罗贯中",10.1)) ;
      3.         collection.add(new Book("小李飞刀","古龙",5.1)) ;
      4.         collection.add(new Book("红楼梦","曹雪芹",34.6)) ;
      5.         // 获取一个迭代器
      6.         Iterator iterator = collection.iterator();
      7.         System.out.println("<<<<==============>>>>");
      8.         // 迭代器遍历集合
      9.         while (iterator.hasNext()) {
      10.             Object next =  iterator.next();
      11.             System.out.println("====迭代元素为" + next + "====");
      12.         }
      13.         // 迭代器遍历到集合最后一个元素时,继续调用 next() 方法,会抛出 NoSuchElementException 异常
      14.         // 要想继续遍历,重新获取一个新的迭代器
      15.         // 因为当前是数组列表,所以迭代器无法返回最初位置继续遍历,只能重新获取一个新的迭代器
      16.         iterator = collection.iterator() ;
      17.         System.out.println("<<<<==============>>>>");
      18.         // 迭代器遍历集合
      19.         while (iterator.hasNext()) {
      20.             Object next =  iterator.next();
      21.             System.out.println("====迭代元素为" + next + "====");
      22.         }        System.out.println("");        // 增强 for 循环代替迭代器        // 增强 for 循环底层仍然是迭代器        // 通过断点,可以发现增强 for 循环会先调用生成迭代器的方法,然后调用迭代器的 hasnext 方法,在调用迭代器的 next 方法        // 增强 for 循环可以理解为简化版的迭代器遍历        for (Object object : collection) {            System.out.println("====增强 for 循环元素为" + object + "====");        }
      复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表