Java常用类(1)——Arrays类

java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用。

该类包含用于操作数组的各种方法(如排序和搜索)。该类还包含一个静态工厂,可以将数组视为列表。

如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException ,除非另有说明。

具有以下功能:
给数组赋值:通过fill方法。
对数组排序:通过sort方法,按升序
比较数组: 通过equals方法比较数组中元素值是否相等。
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
截取数组元素:通过copyOf方法和copyOfRange对数组元素进行截取。
打印数组元素:通过toString方法打印数组元素。
将数组转换为list:通过asList方法转换为List。

1.asList

可以将一个变长参数或者数组转换成List。(生成的List的长度是固定的;能够进行修改操作;不能执行影响长度的操作(如add、remove等,否则会抛出异常)

Integer[] number = {1,2,4,3,2,1,5};
List<Integer> list = Arrays.asList(number);
System.out.println(list);
System.out.println(list.size());

2.sort

用于数组排序

int[] num = {6,7,4,5,2};
Arrays.sort(num);
System.out.println(Arrays.toString(num));//[2,4,5,6,7]

3.binarySearch

用二分法查找数组中的某个元素。

注意:二分法是对有序的数组进行查找(比如先用Arrays.sort()进行排序,然后调用此方法进行查找)。找到元素返回下标,没有则返回-1.

int[] num = {6,7,4,5,2};
Arrays.sort(num);
System.out.println(Arrays.toString(num));//[2,4,5,6,7]
System.out.println(Arrays.binarySearch(num,2));//返回元素的下标0

4.copyOf

拷贝数组元素。底层采用 System.arraycopy() 实现,这是一个native方法。

public static native void arraycopy(Object src,int srcPos,Object dest, int destPos,int length);
src:源数组
srcPos:源数组要复制的起始位置
dest:目的数组
destPos:目的数组放置的起始位置
length:复制的长度
注意:src 和 dest都必须是同类型或者可以进行转换类型的数组。
int[] num1 = {1,2,3,4};
int[] num2 = new int[3];
System.arraycopy(num1, 0, num2, 0, num1.length);
System.out.println(Arrays.toString(num2));//[1,2,3,4]

5.equals和deepEquals

equals用来比较两个数组中对应位置的每个元素是否相等。

deepEquals也是用来比较两个数组的元素是否相等,不过deepEquals能够进行比较多维数组,而且是任意层次的嵌套数组。

String[][] str1 = {{ "y","u","e" },{ "a","n"},{ "i","e"}};  
String[][] str2 = {{ "y","u","e" },{ "a","n"},{ "i","e"}};
System.out.println(Arrays.equals(name1,name2));// false  
System.out.println(Arrays.deepEquals(name1,name2));// true

6.fill

给数组赋值,并且可以指定某个范围

//给a数组所有元素赋值 val
public static void fill(int[] a, int val) {
     for (int i = 0, len = a.length; i < len; i++)
         a[i] = val;
}

int[] num = {1,2,6,5,4,3};
Arrays.fill(num,4);
System.out.println(Arrays.toString(num));//[4, 4, 4, 4, 4, 4]

//给从 fromIndex 开始的下标,toIndex-1结尾的下标都赋值 val,左闭右开
public static void fill(int[] a, int fromIndex, int toIndex, int val) {
    rangeCheck(a.length, fromIndex, toIndex);//判断范围是否合理
    for (int i = fromIndex; i < toIndex; i++)
        a[i] = val;
}

Arrays.fill(num,1,3,6);
System.out.println(Arrays.toString(num));//[4, 6, 6, 4, 4, 4]

7.toString和deepToString

toString用来打印一维数组的元素,而deepToString用来打印多层嵌套的数组元素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值