程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • JavaAPI速查

    • Java基础API
    • String类常用API
    • StringBuilder常用API
    • Arrays数组 工具类
      • 1. 数组转换为字符串
      • 2. 数组排序 (sort)
      • 3. 数组搜索 (binarySearch)
      • 4. 数组比较 (equals)
      • 5. 数组填充 (fill)
      • 6. 数组复制 (copyOf)
      • 7. 数组转换为集合 (asList)
      • 8. 数组内容校验与填充
    • Collections 工具类
    • Java 集合常用API
    • Collection 接口集合的遍历方式
    • Map 接口集合的遍历方式
    • Queue 和 Stack 的常用遍历方式
    • 数组的常用遍历方式
    • 字符串的常用遍历方式
    • 文件或目录的常用遍历方式
    • 比较器的常用使用方式
    • 常用日期和时间API
  • JavaAPI速查
  • JavaAPI速查
scholar
2024-08-24
目录

Arrays数组 工具类

# Arrays数组 工具类

前言

java.util.Arrays 是一个提供操作数组的静态方法的工具类。无论是基本数据类型还是对象类型数组,Arrays 类都提供了大量的便捷方法。

# 1. 数组转换为字符串

  • public static String toString(int[] a):将指定数组转换为字符串并返回。这个方法可以轻松地将数组内容格式化输出,非常适合在调试时使用。
import java.util.Arrays;

public class ArrayToStringDemo {
    public static void main(String[] args) {
        // 创建一个整数数组
        int[] intArray = {1, 2, 3, 4, 5};

        // 将数组转换为字符串并输出
        String arrayAsString = Arrays.toString(intArray);
        System.out.println("数组内容为: " + arrayAsString); // 输出: 数组内容为: [1, 2, 3, 4, 5]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

实际开发场景:

  • 调试与日志记录:在开发过程中,通常需要打印数组内容进行调试,通过 toString 方法可以方便地输出数组内容。

# 2. 数组排序 (sort)

  • public static void sort(int[] a):对指定数组进行升序排序。该方法采用双轴快速排序算法,具有良好的性能表现。
import java.util.Arrays;

public class ArraySortDemo {
    public static void main(String[] args) {
        // 创建一个整数数组
        int[] intArray = {5, 2, 9, 1, 5};

        // 对数组进行升序排序
        Arrays.sort(intArray);

        // 打印排序后的数组
        System.out.println("排序后的数组: " + Arrays.toString(intArray)); // 输出: 排序后的数组: [1, 2, 5, 5, 9]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

实际开发场景:

  • 数据处理与展示:在需要对数据进行排序并展示给用户时,如报表或排行榜。

# 3. 数组搜索 (binarySearch)

  • public static int binarySearch(int[] a, int key):在指定数组中查找指定元素并返回其索引。该方法要求数组已经经过排序,搜索采用二分查找算法,时间复杂度为 O(log n)。
import java.util.Arrays;

public class ArraySearchDemo {
    public static void main(String[] args) {
        // 创建一个已排序的整数数组
        int[] intArray = {1, 2, 3, 4, 5};

        // 查找元素 3 在数组中的索引
        int key = 3;
        int index = Arrays.binarySearch(intArray, key);

        // 输出查找结果
        System.out.println("元素 " + key + " 在数组中的索引: " + index); // 输出: 元素 3 在数组中的索引: 2
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

实际开发场景:

  • 高效查询:在已排序的数据中高效查找元素,如搜索商品列表中的特定价格或名称。

# 4. 数组比较 (equals)

  • public static boolean equals(int[] a, int[] a2):比较两个数组是否相等。该方法逐个比较数组中的每个元素,仅当两个数组长度相同且所有元素相同时才返回 true。
import java.util.Arrays;

public class ArrayComparisonDemo {
    public static void main(String[] args) {
        // 创建两个数组
        int[] array1 = {1, 2, 3};
        int[] array2 = {1, 2, 3};

        // 比较两个数组是否相等
        boolean isEqual = Arrays.equals(array1, array2);

        // 输出比较结果
        System.out.println("两个数组是否相等: " + isEqual); // 输出: 两个数组是否相等: true
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

实际开发场景:

  • 数据验证:在需要判断两个数据集(如用户输入和预期结果)是否一致时使用。

# 5. 数组填充 (fill)

  1. public static void fill(int[] a, int val):使用指定值填充整个数组。
  2. public static void fill(int[] a, int fromIndex, int toIndex, int val):使用指定值填充数组的指定范围内的元素。
import java.util.Arrays;

public class ArrayFillDemo {
    public static void main(String[] args) {
        // 创建一个空的整数数组
        int[] intArray = new int[5];

        // 使用值 7 填充整个数组
        Arrays.fill(intArray, 7);
        System.out.println("使用值 7 填充后的数组: " + Arrays.toString(intArray)); // 输出: 使用值 7 填充后的数组: [7, 7, 7, 7, 7]

        // 创建一个新数组并部分填充
        int[] subArray = {1, 2, 3, 4, 5};
        Arrays.fill(subArray, 1, 4, 0); // 将索引 1 到 3 的元素填充为 0
        System.out.println("部分填充后的数组: " + Arrays.toString(subArray)); // 输出: 部分填充后的数组: [1, 0, 0, 0, 5]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

实际开发场景:

  • 初始化数据:在初始化数组时,使用统一的默认值进行填充,如表单数据的初始值。

# 6. 数组复制 (copyOf)

  1. public static int[] copyOf(int[] original, int newLength):复制指定数组的指定长度。
  2. public static int[] copyOfRange(int[] original, int from, int to):复制指定数组的指定范围内的元素。
import java.util.Arrays;

public class ArrayCopyDemo {
    public static void main(String[] args) {
        // 创建一个源数组
        int[] sourceArray = {1, 2, 3, 4, 5};

        // 复制前 3 个元素
        int[] copyArray = Arrays.copyOf(sourceArray, 3);
        System.out.println("复制前 3 个元素: " + Arrays.toString(copyArray)); // 输出: 复制前 3 个元素: [1, 2, 3]

        // 复制索引 1 到 3 的元素
        int[] rangeArray = Arrays.copyOfRange(sourceArray, 1, 4);
        System.out.println("复制索引 1 到 3 的元素: " + Arrays.toString(rangeArray)); // 输出: 复制索引 1 到 3 的元素: [2, 3, 4]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

实际开发场景:

  • 数组扩展与截取:在需要扩展数组大小或截取部分数组数据时,copyOf 和 copyOfRange 是非常便捷的方法。

# 7. 数组转换为集合 (asList)

  • public static <T> List<T> asList(T... a):将指定数组转换为 List 集合。转换后的集合是一个固定大小的列表,无法添加或删除元素。
import java.util.Arrays;
import java.util.List;

public class ArrayToListDemo {
    public static void main(String[] args) {
        // 创建一个字符串数组
        String[] stringArray = {"苹果", "香蕉", "樱桃"};

        // 将数组转换为 List 集合
        List<String> stringList = Arrays.asList(stringArray);
        System.out.println("转换后的集合: " + stringList); // 输出: 转换后的集合: [苹果, 香蕉, 樱桃]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

实际开发场景:

  • 集合与数组的转换:在需要对数组进行集合操作(如查找、排序等)时,先转换为 List 是一种常见做法。

# 8. 数组内容校验与填充

  • public static boolean hasDefaultValues(int[] array, int defaultValue):检查数组中的元素是否全部等于某个默认值。
import java.util.Arrays;

public class ArrayValidationDemo {
    public static void main(String[] args) {
        // 初始化数组
        int[] arrayWithDefaults = new int[5];
        Arrays.fill(arrayWithDefaults, 0);

        // 校验数组是否全部是默认值
        boolean isAllDefaults = hasDefaultValues(arrayWithDefaults, 0);
        System.out.println("数组是否全部为默认值: " + isAllDefaults); // 输出: 数组是否全部为默认值: true
    }

    public static boolean hasDefaultValues(int[] array, int defaultValue) {
        for (int value : array) {
            if (value != defaultValue) {
                return false;
            }
        }
        return true;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

实际开发场景:

  • 数据初始化校验:在系统启动或模块初始化时,常需要检查数据是否被正确初始化为默认值。
编辑此页 (opens new window)
上次更新: 2025/02/03, 00:09:13
StringBuilder常用API
Collections 工具类

← StringBuilder常用API Collections 工具类→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式