commons-lang3的ArrayUtils类的常用方法总结

ArrayUtils

    该类是操作数组的工具类,因为数组和List不一样,长度不可变,如果尝试对数组增加,删除元素,必须重新定义新的数组,将已定义的数组拷贝到新数组中,总之操作起来非常麻烦,使用该类,可以轻松搞定,下面我们介绍常用方法。

 

对数组增删截取的常用方法

  • add

        除了可以传入int数组外,还可以传入byte[],char[],long[]等基本数据类型。第二个参数是需要添加的元素

    public static int[] add(int[] array, int element) {

  • remove

     除了可以传入int数组外,还可以传入byte[],char[],long[]等基本数据类型。第二个参数是需要移除的元素

    public static int[] remove(int[] array, int element) {

  • subarray

     除了可以传入int数组外,还可以传入byte[],char[],long[]等基本数据类型。第二个参数是要截取的开始索引。第三个参数是要截取的结束索引

    public static int[] subarray(int[] array, int startIndexInclusive, int endIndexExclusive) {

测试代码:

package ArrayUtilsTest;

import java.util.Arrays;

import org.apache.commons.lang3.ArrayUtils;

public class AddRemovceSubArrayTest{

    public static void main(String[] args) {

        int[] arrayAdd = { 1, 2 };
        arrayAdd = ArrayUtils.add(arrayAdd, 3);
        System.err.println("arrayAdd=" + Arrays.toString(arrayAdd));

        int[] arrayRemove = { 1, 2, 3 };
        arrayRemove = ArrayUtils.remove(arrayRemove, 1);
        System.err.println("arrayRemove=" + Arrays.toString(arrayRemove));

        int[] arrayCut = { 1, 2, 3, 4 };
        arrayCut = ArrayUtils.subarray(arrayCut, 1, 3);
        System.err.println("arrayCut=" + Arrays.toString(arrayCut));

    }

}

执行结果

arrayAdd=[1, 2, 3]
arrayRemove=[1, 3]
arrayCut=[2, 3]

 

对数组检索的常用方法

  • contains

       指定的数组中是否包含传入的值

    public static boolean contains(Object[] array, Object objectToFind) {

  • indexOf

        在指定的数组中,查找传入值第一次出现的索引位置,如果没有查找到返回-1,-1在ArrayUtils类中被定义成常量,判断时,可以使用INDEX_NOT_FOUND

    public static int indexOf(Object[] array, Object objectToFind) {

  • lastIndexOf

        在指定的数组中,查找传入值最后一次出现的索引位置,如果没有查找到返回-1

    public static int lastIndexOf(Object[] array, Object objectToFind) {

测试代码:

package ArrayUtilsTest;

import org.apache.commons.lang3.ArrayUtils;

public class SearchArrayTest {

    public static void main(String[] args) {

        String[] arraySrc = { "iosoft2020", "iosoft2021", "iosoft2022", "iosoft2021" };
        System.err.println(ArrayUtils.contains(arraySrc, "iosoft2022"));
        System.err.println(ArrayUtils.indexOf(arraySrc, "iosoft2021"));
        System.err.println(ArrayUtils.indexOf(arraySrc, "iosoft2023"));
        System.err.println(ArrayUtils.lastIndexOf(arraySrc, "iosoft2021"));
        System.err.println(ArrayUtils.lastIndexOf(arraySrc, "iosoft2023"));
        System.err.println(ArrayUtils.INDEX_NOT_FOUND == -1);

    }

}

执行结果

true
1
-1
3
-1
true

 

对数组校验的常用方法

  • isEmpty

       判断数组是否为null或者空数组

        public static boolean isEmpty(Object[] array) {

  • isSameLength

        判断两个数组是否是同样的长度

        public static boolean isSameLength(Object[] array1, Object[] array2) {

  • isEquals

        判断两个数组的长度和元素是否相同

    public static boolean isEquals(Object array1, Object array2) {

测试代码:

package ArrayUtilsTest;

import org.apache.commons.lang3.ArrayUtils;

public class CheckArrayTest {

    public static void main(String[] args) {

        String[] arraySrc = { "iosoft2020", "iosoft2021", "iosoft2022" };
        String[] arrayDest = { "iosoft2023", "iosoft2024", "iosoft2025" };
        String[] arraySrcCopy = { "iosoft2020", "iosoft2021", "iosoft2022" };
        System.err.println(ArrayUtils.isEmpty(arraySrc));
        System.err.println(ArrayUtils.isSameLength(arraySrc, arrayDest));
        System.err.println(ArrayUtils.isEquals(arraySrc, arraySrcCopy));

    }

}

执行结果

false
true
true

 

怎样创建一个空数组

    当我们调用某方法,需要返回空数组时,传统的方法,需要new一个数组对象,new关键字大家都知道,需要在堆内存中分配一个内存空间,每次new,每次都要在堆内存中分配内存空间,这样严重影响程序执行效率,而ArrayUtils类中为我们提供了一个静态变量,不需要实例化,直接使用,个人还是比较喜欢这样的风格,具体业务中的常量我们需要定义以外,像这样jdk级别的常量,大部分我们都可以通过第三方jar包中找到,后续我会继续像大家介绍一些这样风格的类或者是常量

    public Object[] getObjectArray() {
        return ArrayUtils.EMPTY_OBJECT_ARRAY;
    }

 

基本类型和包装类型数组的相互转换

    大家知道,java中的基本数据类型都对应着其包装类型,例如,int和Integer,byte和Byte等,那我们看看基本类型的数组和其包装类型的数组是怎样的转换的。

  • toPrimitive

       把包装类型数组转换基本类型数组,该方法是重载方法,还提供了其他基本类型的方法,大家可以自行参照源码

       public static int[] toPrimitive(Integer[] array) {

  • toObject

        把基本类型数组转换包装类型数组,该方法也是重载方法,还提供了其他基本类型的方法,大家可以自行参照源码

       public static Byte[] toObject(byte[] array) {

测试代码:

package ArrayUtilsTest;

import org.apache.commons.lang3.ArrayUtils;

public class Object2PrimitiveTest {

    public static void main(String[] args) {

        Integer[] integerArrays = new Integer[] { 1, 2 };
        int[] intArrays = ArrayUtils.toPrimitive(integerArrays);

        byte[] byteArrays = new byte[] { 1, 2 };
        Byte[] byteRapArrays = ArrayUtils.toObject(byteArrays);

    }

}

 

数组转换Map

    这里需要说明的是,map是key-value键值对形式的数据结构,我们就需要使用二维数组来转换map,用法很简单,参照下面的代码

测试代码:

package ArrayUtilsTest;

import java.util.Map;

import org.apache.commons.lang3.ArrayUtils;

public class Array2MapTest {

    public static void main(String[] args) {

        Map<Object, Object> map = ArrayUtils.toMap(new String[][]{
            {"1","iosoft2020"},
            {"2","iosoft2021"}
        });

    }

}

 

    还是很实用的,大家根据项目中的需求来选择具体的实现,下篇见。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
commons-lang3-3.10.jar是一个Java语言的实用工具库,是Apache Commons项目的一部分。它提供了许多常用的、与Java核心库不同的功能,以简化开发过程。 这个库提供了各种工具方法,用于字符串操作、对象操作、数组操作、数学计算、日期处理等。例如,我们可以使用StringUtils来处理字符串,例如拼接字符串、截取字符串、替换字符串等。ObjectUtils提供了一些有用的工具方法,例如判断对象是否为空、获取对象的默认值等。ArrayUtils提供了一些对数组操作的便利方法,例如判断数组是否为空、查找数组中的元素等。 commons-lang3-3.10.jar还提供了一些涉及型转换和编码处理的工具方法。例如,我们可以使用NumberUtils来进行字符串和基本数据型之间的转换,StringUtils提供了各种编码和解码方法,例如URL编码、XML字符转义等。 此外,commons-lang3-3.10.jar还提供了一些与日期和时间相关的功能。例如,DateUtils提供了日期格式化、解析和计算的方法,DurationUtils提供了一些方便的方法来处理时间间隔。 通过使用commons-lang3-3.10.jar,我们可以提高开发效率,减少代码编写量,避免重复造轮子的情况出现。这个库已经被广泛使用,并且有一个活跃的社区维护,以确保其功能的稳定和更新。无论是开发基于Java的桌面应用程序还是Web应用程序,commons-lang3-3.10.jar都是一个非常有用的工具库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值