Collection集合

Collection集合

  1. Collection集合常用功能

    • 执行路口

      package cn.xiaoge.day13.demo01;
      
      /*
          java.util.Collection接口
              所有单列集合的最顶层的接口, 里边定义了所有单列集合共性的方法
              任意的单列集合都可以使用Collection接口中的方法
      
          共性的方法:
              public boolean add(E e):  把给定的对象添加到当前集合中 。
              public void clear():清空集合中所有的元素。
              public boolean remove(E e): 把给定的对象在当前集合中删除。
              public boolean contains(E e): 判断当前集合中是否包含给定的对象。
              public boolean isEmpty(): 判断当前集合是否为空。
              public int size(): 返回集合中元素的个数。
              public Object[] toArray(): 把集合中的元素,存储到数组中。
       */
      
      import java.util.ArrayList;
      import java.util.Collection;
      
      public class Demo01Collection {
      
          public static void main(String[] args) {
              // 创建一个集合对象, 可以使用多态
              Collection<String> coll = new ArrayList<>();
              System.out.println(coll); // 重写了toString方法 []
      
              /*
                  public boolean add(E e):  把给定的对象添加到当前集合中。
                  返回值是一个布尔值, 一般都返回true
               */
              boolean b1 = coll.add("张三");
              System.out.println("b1: " + b1); // b1: true
              System.out.println(coll); // [张三]
              coll.add("李四");
              coll.add("王五");
              coll.add("赵六");
              coll.add("田七");
              System.out.println(coll); // [张三, 李四, 王五, 赵六, 田七]
      
              System.out.println("================================");
      
              /*
                  public boolean remove(E e): 把给定的对象在当前集合中删除。
                  返回值是一个boolean值, 集合中存在元素, 删除元素, 返回true
                                       集合中不存在元素, 删除失败, 返回false
               */
              boolean b2 = coll.remove("赵六");
              System.out.println("b2: " + b2); // b2: true
              System.out.println(coll); // [张三, 李四, 王五, 田七]
      
              boolean b3 = coll.remove("赵四");
              System.out.println("b3: " + b3); // b3: false
              System.out.println(coll); // [张三, 李四, 王五, 田七]
      
              System.out.println("================================");
      
              /*
                  public boolean contains(E e): 判断当前集合中是否包含给定的对象。
                  包含返回true
                  不包含返回false
               */
              boolean b4 = coll.contains("李四");
              System.out.println("b4: " + b4); // b4: true
      
              boolean b5 = coll.contains("赵四");
              System.out.println("b5: " + b5); // b5: false
      
              System.out.println("================================");
      
              /*
                  public boolean isEmpty(): 判断当前集合是否为空。 集合为空返回true, 集合不为空返回false
               */
              boolean b6 = coll.isEmpty();
              System.out.println("b6: " + b6); // b6: false
      
              System.out.println("================================");
      
              /*
                  public int size(): 返回集合中元素的个数。
               */
              int count = coll.size();
              System.out.println("count: " + count); // count: 4
      
              System.out.println("================================");
      
              /*
                  public Object[] toArray(): 把集合中的元素,存储到数组中。
               */
              Object[] arr = coll.toArray();
              for (int i = 0; i < arr.length; i++) {
                  System.out.print(arr[i] + " "); // 张三 李四 王五 田七
              }
              System.out.println("");
      
              System.out.println("================================");
      
              /*
                  public void clear():清空集合中所有的元素。 但是不删除集合, 集合还在
               */
              coll.clear();
              System.out.println(coll); // []
              System.out.println(coll.isEmpty()); // true
          }
      
      }
      
      // 运行结果
      []
      b1: true
      [张三]
      [张三, 李四, 王五, 赵六, 田七]
      ================================
      b2: true
      [张三, 李四, 王五, 田七]
      b3: false
      [张三, 李四, 王五, 田七]
      ================================
      b4: true
      b5: false
      ================================
      b6: false
      ================================
      count: 4
      ================================
      张三 李四 王五 田七 
      ================================
      []
      true
      
  2. Iterator接口及迭代器

    • 执行路口

      package cn.xiaoge.day13.demo02;
      
      /*
          java.util.Iterator接口: 迭代器(对集合遍历)
      
          有两个常用的方法
              boolean	hasNext() 如果仍有元素可以迭代,则返回 true。
                  判断集合中还有没有下一个元素, 有就返回true, 没有就返回false
              E next() 返回迭代的下一个元素。
                  取出集合中的下一个元素
      
          Iterator迭代器, 是一个接口, 我们无法直接使用, 需要使用Iterator接口的实现类对象, 获取实现类的方式比较特殊
      
          Collection接口中有一个方法, 叫iterator(), 这个方法返回的就是迭代器的实现类对象.
              Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器.
      
          迭代器的使用步骤(重点):
              1. 使用集合中的方法iterator()获取迭代器的实现类对象, 使用Iterator接口接收(多态)
              2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素.
              3. 使用Iterator接口中的方法next取出集合中的下一个元素.
       */
      
      import java.util.ArrayList;
      import java.util.Collection;
      import java.util.Iterator;
      
      public class Demo01Iterator {
      
          public static void main(String[] args) {
      
              // 创建一个集合对象
              Collection<String> coll = new ArrayList<>();
      
              // 往集合中添加数据
              coll.add("姚明");
              coll.add("科比");
              coll.add("麦迪");
              coll.add("詹姆斯");
              coll.add("艾弗森");
      
      
              /*
                  1. 使用集合中的方法iterator()获取迭代器的实现类对象, 使用Iterator接口接收(多态)
                  注意:
                      Iterator<E>接口也是有泛型的, 迭代器的泛型跟着集合走, 集合是什么泛型, 迭代器就是什么泛型
               */
      
              // 多态   接口              实现类
              Iterator<String> it = coll.iterator();
      
              /*
                  发现使用迭代器取出集合中元素的代码, 是一个重复的过程
                  所以我们可以使用循环优化
                  不知道集合中有多少元素, 使用while循环
                  循环结束的条件, hasNext方法返回false
               */
      
              while (it.hasNext()){
                  String s = it.next();
                  System.out.println(s);
              }
              System.out.println("=====================");
      
              for (Iterator<String> it2 = coll.iterator(); it2.hasNext();) {
                  String s = it2.next();
                  System.out.println(s);
              }
      
              // 2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素.
      //        boolean b = it.hasNext();
      //        System.out.println(b); // true
      //
      //        // 3. 使用Iterator接口中的方法next取出集合中的下一个元素.
      //        String s = it.next();
      //        System.out.println(s);
      //
      //
      //        b = it.hasNext();
      //        System.out.println(b);
      //        s = it.next();
      //        System.out.println(s);
      //
      //        b = it.hasNext();
      //        System.out.println(b);
      //        s = it.next();
      //        System.out.println(s);
      //
      //        b = it.hasNext();
      //        System.out.println(b);
      //        s = it.next();
      //        System.out.println(s);
      //
      //        b = it.hasNext();
      //        System.out.println(b);
      //        s = it.next();
      //        System.out.println(s);
      //
      //        b = it.hasNext();
      //        System.out.println(b); // 没有元素, 返回false
      //        s = it.next(); // 没有元素, 在取出元素会抛出NoSuchElementException没有元素异常
      //        System.out.println(s);
          }
      
      }
      
      // 运行结果
      姚明
      科比
      麦迪
      詹姆斯
      艾弗森
      =====================
      姚明
      科比
      麦迪
      詹姆斯
      艾弗森
      
  3. 增强for循环

    • 执行路口

      package cn.xiaoge.day13.demo02;
      
      /*
          增强for循环: 底层使用的也是迭代器, 使用for循环的格式, 简化了迭代器的书写
          是JDK1.5之后出现的新特性
          Collection<E>extends Iterator<E>: 所有的单列集合都可以使用增强for
          public interface Iterable<T>实现这个接口允许对象成为 "foreach" 语句的目标.
      
          增强for循环: 用来遍历集合和数组
      
          格式:
              for(集合/数组的数据类型 变量名: 集合名/数组名){
                  sout(变量名);
              }
          注意:
              新for循环必须有被遍历的目标. 目标只能是集合或者是数组. 新式for仅仅作为遍历操作出现.
       */
      
      import java.util.ArrayList;
      import java.util.Collection;
      
      public class Demo02Foreach {
      
          public static void main(String[] args) {
              demo01();
              System.out.println("=====================");
              demo02();
          }
      
      
          // 使用增强for循环遍历集合
          private static void demo02() {
      
              Collection<String> list = new ArrayList<>();
              list.add("aaa");
              list.add("bbb");
              list.add("ccc");
              list.add("ddd");
              for(String s: list) {
                  System.out.println(s);
              }
      
          }
      
      
          // 使用增强for循环遍历数组
          private static void demo01() {
              int[] arr = {1, 2, 3, 4, 5};
              for(int i: arr){
                  System.out.println(i);
              }
          }
      
      }
      
      // 运行结果
      1
      2
      3
      4
      5
      =====================
      aaa
      bbb
      ccc
      ddd
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

只因为你温柔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值