Arrays类

Arrays里面包含了一系列静态方法,用于管理,操作数组(比如排序,搜索)。

toString方法,返回数组的字符串形式

Arrays.toStirng(str);

sort排序(自然排序和定制排序)

Interger arr[] = {1,-1,7,0,88};

binarySearch 通过二分搜索法进行查找arr数组中的对应元素,前提是数组必须有序,返回的是对应元素的下标

int index = Arrays.binarySearch(arr,3);

----------------------------------------------

定制排序:

Arrays.sort(arr , new Comparator() {

     @override

     public int compare(Object o1 , Object o2) {

                  Integer i1 = (Integer) o1;

                  Integer i2 = (Integer) o2;

                  return i2 - i1;

}

});

使用定制排序,传入两个参数,一个是要排序的数组arr,一个是实现了Comparator接口的匿名内部类,该类要求实现compare方法

其中执行的底层源码:

首先判断传入接口类型是否为空,因为此时传入的是实现接口的匿名内部类,所以不为空,执行Timsort()方法,再调用binarySort()方法,在binarySort()方法底层,会通过匿名内部类的compare方法决定排序顺序。

根据compare返回的值是大于0还是小于0,会影响整个排序结果

例如定制冒泡排序

arr数组调用定制排序的bubble02方法,传入了arr数组和实现了Comparator接口的匿名内部类,

在bubble中看到,c调用compare方法,判断前一个数组元素和后一个数组元素的大小,来决定是否交换顺序,若arr[j] > arr[j+1],则每轮都将最大的数排到末尾,按正序进行冒泡排序,否则是每轮都将最小的数排到末尾,按倒序进行冒泡排序。

------------------------------------------

Arrays的其他常见方法

binarySearch()二叉查找

如前文,使用该方法的数组必须有序,若无序则不能使用,查找时若数组中不存在该元素,则返回

return  -(low +1); 意思是该元素若存在,应当处于的位置+1

例如数组arr[] = {1,2,90,123,567},此时查找元素568,不存在,但它若存在,位置应当是arr[5],所以此时返回-(5+1) 为-6

copyOf()数组拷贝

从arr数组中,拷贝arr.length个元素到newArr数组中

例如Integer[] newArr = Arrays.copyOf(arr , arr.length+1);

此时新的数组newArr为{1,2,90,123,567,null}

拷贝的数组长度不能为负,否则会抛出异常

fill()数组填充

Integer[] num =new Integer[] {9,3,2};

Arrays.fill(num,99);

此时填充完,num数组为{99,99,99},相当于用指定元素替换数组中所有元素

equals()比较两个数组元素是否完全一致,一致返回true,否则返回false

asList()可以将一组值转换为集合list

LIst aslist = Arrays.asList(2,3,5,6,7);

此时输出aslist会输出一个集合[2,3,5,6,7]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值