常用数据结构-数组 (Array)


🌱 数组 (Array)

在这里插入图片描述


📌 特点

  1. 固定大小:数组在创建时需要指定大小,之后不能动态地增加或减少。
  2. 连续的内存:数组的元素在内存中是连续存放的,这使得访问速度非常快。
  3. 索引访问:可以通过索引直接访问数组中的任何元素。
  4. 插入/删除开销大:插入或删除元素,特别是在数组中间位置时,可能需要移动大量元素。
  5. 类型固定:数组只能存放单一类型的数据(例如,intdoubleObject)。

📌 Java中常用的数组

  1. 基本类型数组:例如 int[], double[], char[] 等。
  2. 对象数组:例如 String[], Object[] 或其他对象类型的数组。
  3. 多维数组:例如 int[][](二维数组),int[][][](三维数组)等。

📌 Java中数组的使用

  1. 声明与初始化

    int[] arr1 = new int[5];          // 定义一个长度为5的整数数组
    int[] arr2 = {1, 2, 3, 4, 5};    // 定义并初始化一个整数数组
    String[] strArray = new String[3]; // 定义一个长度为3的字符串数组
    
  2. 访问数组元素

    int firstElement = arr2[0];      // 获取数组的第一个元素
    
  3. 修改数组元素

    arr2[0] = 6;                     // 修改数组的第一个元素为6
    
  4. 数组长度

    int length = arr2.length;        // 获取数组的长度
    
  5. 遍历数组

    使用for循环:

    for (int i = 0; i < arr2.length; i++) {
        System.out.println(arr2[i]);
    }
    

    使用增强型for循环 (foreach):

    for (int num : arr2) {
        System.out.println(num);
    }
    
  6. 多维数组

    int[][] matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    int element = matrix[1][2];      // 获取第二行第三列的元素 (6)
    

📌 常用场景

  1. 数据处理:当你需要处理固定数量的相似类型的数据时,例如像素值、成绩列表等。
  2. 算法实现:许多基础算法,如排序算法(冒泡排序、插入排序等),都是基于数组实现的。
  3. 缓存机制:有时数组用作缓存,以便快速读取和临时存储数据。
  4. 查找操作:当你需要快速访问数据集中的特定元素时,如在哈希表实现中。
  5. 多维数据:使用多维数组,例如二维数组,可以表示矩阵、图像等。

在Java和Spring的上下文中,数组主要用于配置和数据处理。例如,Spring Boot的命令行参数是作为字符串数组传递的。但随着集合框架的普及,如ListSet,它们提供了更大的灵活性和操作,数组在许多场景中已经被这些更高级的数据结构所替代。


⚡️ 使用 Java 8 Stream API 操作数组

📝 1. 创建 Stream

从数组创建:

int[] numbers = {1, 2, 3, 4, 5};
IntStream numberStream = Arrays.stream(numbers);

📝 2. 常用操作

  • Filter:

过滤数组中的元素。

int[] numbers = {1, 2, 3, 4, 5};
Arrays.stream(numbers)
      .filter(n -> n % 2 == 0)
      .forEach(System.out::println);  // 输出 2 和 4
  • Map:

将数组中的每个元素转换为另一种形式。

String[] words = {"hello", "world"};
Arrays.stream(words)
      .map(String::toUpperCase)
      .forEach(System.out::println);  // 输出 HELLO, WORLD
  • Sorted:

对数组中的元素进行排序。

int[] numbers = {5, 3, 1, 4, 2};
Arrays.stream(numbers)
      .sorted()
      .forEach(System.out::println);  // 输出 1, 2, 3, 4, 5
  • Average:

计算数组中的元素的平均值。

int[] numbers = {1, 2, 3, 4, 5};
double average = Arrays.stream(numbers)
                       .average()
                       .getAsDouble();
System.out.println(average);  // 输出 3.0
  • Min/Max:

找到数组中的最小或最大值。

int[] numbers = {5, 3, 1, 4, 2};
int min = Arrays.stream(numbers)
                .min()
                .getAsInt();
int max = Arrays.stream(numbers)
                .max()
                .getAsInt();
System.out.println(min);  // 输出 1
System.out.println(max);  // 输出 5
  • Collect:

将 Stream 的结果收集到另一种数据结构。

String[] words = {"hello", "world"};
List<String> wordList = Arrays.stream(words)
                              .map(String::toUpperCase)
                              .collect(Collectors.toList());

这只是一些基础的操作,Java 8 的 Stream API 提供了许多其他功能来处理数组和其他数据源。


⚡️ 使用 commons-lang3 操作数组

  • 加入依赖

    首先,您需要在 Maven 项目的 pom.xml 中添加以下依赖:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
    </dependency>
    
  • 常用操作

  • isEmpty / isNotEmpty:

    int[] array = {1, 2, 3};
    boolean isEmpty = ArrayUtils.isEmpty(array);
    
  • Add element:

    int[] array = {1, 2, 3};
    array = ArrayUtils.add(array, 4);  // Result: {1, 2, 3, 4}
    
  • Remove element:

    int[] array = {1, 2, 3, 4};
    array = ArrayUtils.remove(array, 2);  // Result: {1, 2, 4}
    

⚡️ 使用 guava 操作数组

  • 加入依赖

    首先,您需要在 Maven 项目的 pom.xml 中添加以下依赖:

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>30.1-jre</version>
    </dependency>
    
  • 常用操作

  • Join / Split:

    int[] array = {1, 2, 3, 4};
    String joinResult = Ints.join(",", array);  // Result: "1,2,3,4"
    int[] splitResult = Ints.toArray(Ints.asList(1, 2, 3, 4));
    
  • Contains:

    int[] array = {1, 2, 3, 4};
    boolean contains = Ints.contains(array, 3);  // true
    
  • Min / Max:

    int[] array = {1, 2, 3, 4};
    int min = Ints.min(array);  // 1
    int max = Ints.max(array);  // 4
    

以上只是这两个库中的一些常用方法。它们都包含了许多其他的实用功能,您可以查阅官方文档或源代码以了解更多。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yueerba126

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

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

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

打赏作者

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

抵扣说明:

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

余额充值