Java数组进阶操作方法的核心技巧

 更新时间:2026年03月13日 09:33:48   作者:今天没ID  
数组作为一种容器,我认为是存放同一类型元素的无序排列的集合,在编写程序的过程中数组的使用是不可或缺的,这篇文章主要介绍了Java数组进阶操作方法的核心技巧,需要的朋友可以参考下

前言

数组作为 Java 中最基础的数据结构,其固定长度的特性使得增删操作需要特殊处理。本文将基于数组查找功能,一步步实现元素插入(单个元素 / 数组)和删除操作,带你掌握数组操作的核心技巧。

基础:数组元素查找

首先,我们需要实现一个基础功能 —— 查找指定元素在数组中的位置。这是后续所有操作的前提。

查找功能实现

/**
 * 查找数组中指定元素的位置
 * 
 * @param arr 待查找的数组
 * @param target 要查找的目标元素
 * @return 元素所在索引,未找到返回-1
 */
public static int findElement(int[] arr, int target) {
    // 空数组直接返回-1
    if (arr == null || arr.length == 0) {
        return -1;
    }
    
    // 遍历数组查找元素
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == target) {
            return i; // 找到元素,返回索引
        }
    }
    
    return -1; // 未找到元素
}

进阶操作一:在指定元素后插入单个元素

代码实现

/**
 * 在指定元素后插入单个新元素
 * 
 * @param arr 原数组
 * @param target 目标元素(在其后插入)
 * @param newValue 要插入的新元素
 * @return 插入后的新数组
 */
public static int[] insertAfterElement(int[] arr, int target, int newValue) {
    int targetIndex = findElement(arr, target);
    
    // 未找到目标元素,返回原数组副本
    if (targetIndex == -1) {
        int[] newArr = new int[arr.length];
        System.arraycopy(arr, 0, newArr, 0, arr.length);
        return newArr;
    }
    
    // 创建新数组,长度+1
    int[] newArr = new int[arr.length + 1];
    
    // 复制目标元素及之前的元素
    System.arraycopy(arr, 0, newArr, 0, targetIndex + 1);
    
    // 插入新元素
    newArr[targetIndex + 1] = newValue;
    
    // 复制目标元素之后的元素
    System.arraycopy(arr, targetIndex + 1, newArr, targetIndex + 2, 
                     arr.length - targetIndex - 1);
    
    return newArr;
}

进阶操作二:在指定元素后插入数组

有时候我们需要插入多个元素,这就需要在指定位置插入一个数组。

代码实现

/**
 * 在指定元素后插入一个数组的所有元素
 * 
 * @param arr 原数组
 * @param target 目标元素(在其后插入)
 * @param insertArr 要插入的数组
 * @return 插入后的新数组
 */
public static int[] insertArrayAfterElement(int[] arr, int target, int[] insertArr) {
    if (insertArr == null || insertArr.length == 0) {
        return arr.clone(); // 插入数组为空,返回原数组副本
    }
    
    int targetIndex = findElement(arr, target);
    
    // 未找到目标元素,返回原数组副本
    if (targetIndex == -1) {
        return arr.clone();
    }
    
    // 创建新数组,长度=原数组长度+插入数组长度
    int[] newArr = new int[arr.length + insertArr.length];
    
    // 复制目标元素及之前的元素
    System.arraycopy(arr, 0, newArr, 0, targetIndex + 1);
    
    // 插入新数组
    System.arraycopy(insertArr, 0, newArr, targetIndex + 1, insertArr.length);
    
    // 复制目标元素之后的元素
    System.arraycopy(arr, targetIndex + 1, newArr, 
                     targetIndex + 1 + insertArr.length, 
                     arr.length - targetIndex - 1);
    
    return newArr;
}

进阶操作三:删除指定元素

代码实现

/**
 * 删除数组中的指定元素
 * 
 * @param arr 原数组
 * @param target 要删除的目标元素
 * @return 删除后的新数组
 */
public static int[] deleteElement(int[] arr, int target) {
    int targetIndex = findElement(arr, target);
    
    // 未找到目标元素,返回原数组副本
    if (targetIndex == -1) {
        return arr.clone();
    }
    
    // 创建新数组,长度-1
    int[] newArr = new int[arr.length - 1];
    
    // 复制目标元素之前的元素
    System.arraycopy(arr, 0, newArr, 0, targetIndex);
    
    // 复制目标元素之后的元素
    System.arraycopy(arr, targetIndex + 1, newArr, targetIndex, 
                     arr.length - targetIndex - 1);
    
    return newArr;
}

总结

本文通过数组查找、插入、删除三大操作的实现,展示了 Java 数组操作的核心技巧:

  1. 查找是基础:所有定位操作都依赖于元素查找功能
  2. 增删靠复制:数组长度固定,增删操作本质是创建新数组并分区域复制元素
  3. 分段处理是关键:无论是插入还是删除,都需要将数组分为目标位置前后两部分分别处理

到此这篇关于Java数组进阶操作方法核心技巧的文章就介绍到这了,更多相关Java数组操作方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud 部署时使用 Kubernetes 作为注册中心和配置中心的方法

    Spring Cloud 部署时使用 Kubernetes 作为注册中心和配置中

    Spring Cloud Kubernetes提供了使用Kubernete本地服务的Spring Cloud通用接口实现,这篇文章主要介绍了Spring Cloud 部署时如何使用 Kubernetes 作为注册中心和配置中心,需要的朋友可以参考下
    2024-05-05
  • Java怎样判断堆区中的对象可以被回收了

    Java怎样判断堆区中的对象可以被回收了

    文章介绍了Java垃圾回收机制的工作原理,主要通过引用计数法和可达性分析法来判断对象是否可以被回收,引用计数法存在循环引用问题,而可达性分析法则使用GCRoot对象来判断对象是否可达,从而决定是否回收,这两种方法各有优缺点,但Java最终采用了可达性分析法来实现垃圾回收
    2024-12-12
  • Java开发常见异常及解决办法详解

    Java开发常见异常及解决办法详解

    这篇文章主要介绍了java程序常见异常及处理汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • maven profile实现多环境配置的示例

    maven profile实现多环境配置的示例

    这篇文章主要介绍了maven profile实现多环境配置的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • linux查找安装jdk并配置JAVA_HOME的方法

    linux查找安装jdk并配置JAVA_HOME的方法

    这篇文章主要介绍了linux查找安装jdk,配置JAVA_HOME,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 一文搞懂Java常见的三种代理模式(静态代理、动态代理和cglib代理)

    一文搞懂Java常见的三种代理模式(静态代理、动态代理和cglib代理)

    Java中常见的三种代理模式是静态代理模式、动态代理模式和CGLIB代理模式,本文就来给大家详细的讲解一下这三种代理模式,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • Springboot设置统一的返回格式的方法步骤

    Springboot设置统一的返回格式的方法步骤

    在我们应用中我们通常与前端交互使用json格式,设置统一的返回json 格式是非常必要的,本文主要介绍了Springboot设置统一的返回格式的方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • java怎么创建目录(删除/修改/复制目录及文件)代码实例

    java怎么创建目录(删除/修改/复制目录及文件)代码实例

    这篇文章主要介绍了java怎么创建目录,还包括删除/修改/复制目录及文件,代码简单,下面直接看代码吧
    2013-12-12
  • navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法

    navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法

    今天小编就为大家分享一篇关于navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java实现批量修改txt文件名称的方法示例

    Java实现批量修改txt文件名称的方法示例

    这篇文章主要介绍了Java实现批量修改txt文件名称的方法,结合实例形式分析了Java针对目录文件遍历及文件读写、属性操作等相关实现技巧,需要的朋友可以参考下
    2019-03-03

最新评论