• Java中的Collection


    Collection

    Collection 集合概述和使用

    • Collection集合概述

      • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

      • JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现

    • 创建Collection集合的对象

      • 多态的方式

      • 具体的实现类ArrayList

    • Collection集合常用方法

      方法名说明
      boolean add(E e)添加元素
      boolean remove(Object o)从集合中移除指定的元素
      boolean removeIf(Object o)根据条件进行移除
      void clear()清空集合中的元素
      boolean contains(Object o)判断集合中是否存在指定的元素
      boolean isEmpty()判断集合是否为空
      int size()集合的长度,也就是集合中元素的个数

    collection集合体系图

    各类使用场景

    collection三种通用的遍历方式

    1. 迭代器(不依赖索引)

    介绍
    • 迭代器,集合的专用遍历方式

    • Iterator iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到

    三个主要的方法:
    • boolean hasNext(): 检查是否还有下一个元素。

    • Object next(): 返回下一个元素。

    • void remove(): 删除迭代器最后一次返回的元素。

    使用迭代器遍历集合的基本步骤如下:
    1. 获取集合的迭代器对象。

    2. 使用hasNext()方法检查是否还有下一个元素。

    3. 使用next()方法获取下一个元素。

    4. 重复步骤2和3,直到没有更多元素。

    下面是一个使用迭代器遍历ArrayList的简单示例:
     
    1. import java.util.ArrayList;
    2.  import java.util.Iterator;
    3.  ​
    4.  public class IteratorExample {
    5.      public static void main(String[] args) {
    6.          // 创建一个ArrayList对象
    7.          ArrayList list = new ArrayList<>();
    8.          list.add("元素1");
    9.          list.add("元素2");
    10.          list.add("元素3");
    11.  ​
    12.          // 获取迭代器
    13.          Iterator iterator = list.iterator();
    14.  ​
    15.          // 使用迭代器遍历ArrayList
    16.          while (iterator.hasNext()) {
    17.              String element = iterator.next();
    18.              System.out.println(element);
    19.         }
    20.  ​
    21.          // 尝试删除元素(可选)
    22.          if (iterator.hasNext()) {
    23.              iterator.next();
    24.              iterator.remove(); // 删除最后一个访问的元素
    25.         }
    26.  ​
    27.          // 再次遍历ArrayList,观察删除效果
    28.          System.out.println("删除元素后:");
    29.          iterator = list.iterator();
    30.          while (iterator.hasNext()) {
    31.              String element = iterator.next();
    32.              System.out.println(element);
    33.         }
    34.     }
    35.  }
    注意事项:
    • 迭代器遍历完毕,指针不会复位。

    • 循环中只能用一次next方法,因为用两次next方法可能回导致指针越界。

    • next和hasnext方法要配套使用。

    • 迭代器遍历时,不能用集合调用remove方式进行删除,要调用iterator中的方式进行删除。

    增强for循环

    介绍
    • 它是JDK5之后出现的,其内部原理是一个Iterator迭代器

    • 实现Iterable接口的类才可以使用迭代器和增强for

    • 简化数组和Collection集合的遍历

    基本语法如下:
     for (元素类型 元素变量 : 集合或数组) {    // 循环体}

    例如,遍历一个ArrayList:

    1.  aList list = new ArrayList<>();
    2.  list.add("Apple");list.add("Banana");list.add("Cherry");
    3.  for (String fruit : list) {
    4.   System.out.println(fruit);
    5.  }
    注意事项
    1. 增强for循环只能用于遍历,不能用于添加或删除元素。在循环体内对集合进行修改(如add或remove)可能会引发ConcurrentModificationException异常。

    2. 对于基本数据类型,如int、double等,需要在前面声明一个对应的包装类型变量,如Integer、Double等。

    Lambda表达式

    Lambda表达式是Java 8引入的一种新特性,主要用于表示匿名函数。在遍历集合时,常与Stream API结合使用。基本语法如下:

     集合.stream().forEach(元素 -> {    // 对元素进行操作});

    例如,遍历一个ArrayList并打印每个元素:

    1. public class A07_CollectionDemo7 {
    2.      public static void main(String[] args) {
    3.         /*
    4.          lambda表达式遍历:
    5.                  default void forEach(Consumer action):
    6.          */
    7.  ​
    8.          //1.创建集合并添加元素
    9.          Collection coll = new ArrayList<>();
    10.          coll.add("zhangsan");
    11.          coll.add("lisi");
    12.          coll.add("wangwu");
    13.          //2.利用匿名内部类的形式
    14.          //底层原理:
    15.          //其实也会自己遍历集合,依次得到每一个元素
    16.          //把得到的每一个元素,传递给下面的accept方法
    17.          //s依次表示集合中的每一个数据
    18.         /* coll.forEach(new Consumer() {
    19.              @Override
    20.              public void accept(String s) {
    21.                  System.out.println(s);
    22.              }
    23.          });*/
    24.  ​
    25.          //lambda表达式
    26.          coll.forEach(s -> System.out.println(s));
    27.     }
    28.  }
    注意事项
    1. Lambda表达式主要用于函数式编程,适用于对集合进行复杂操作,如过滤、映射、排序等。对于简单的遍历操作,增强for循环可能更加直观和高效。

    2. Lambda表达式在遍历过程中同样不能修改集合,否则会引发异常。

    3. Lambda表达式中的->操作符左侧是参数列表,右侧是Lambda体。如果Lambda体只有一条语句,可以省略大括号和分号。

    4. Lambda表达式可以引用外部变量,但这些变量必须是final或等效于final的(即未被修改过)。

  • 相关阅读:
    我们来用Unity做一个局域网游戏(下)
    02 视频或语音转文本
    常用的SSH,你了解多少?(长文警告)
    【C++深度剖析学习总结】28 函数对象分析
    速锐得适配进口福特烈马BRONCO车载 CAN总线应用随动转向大灯改装
    Git详解及 github使用
    为什么你做自媒体赚不到钱?今天就教你几招
    能耗分项计量监测系统在某大型公建中的应用
    拖动拖动拖动
    有此秘籍,TIF图片转Excel表格不再难
  • 原文地址:https://blog.csdn.net/2301_80160619/article/details/136396846