Java学习笔记(七)——操作数组工具类Arrays

Arrays

操作数组的工具类。

在这里插入图片描述

Arrays.toString()

import java.util.Arrays;

public class test40 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        String str = Arrays.toString(ints);
        System.out.println(str);  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    }
}

在这里插入图片描述

Arrays.binarySearch()

import java.util.Arrays;

public class test40 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int index = Arrays.binarySearch(ints, 10);
        System.out.println(index);
    }
}

在这里插入图片描述

在这里插入图片描述

Arrays.copyOf()

如果新数组的长度小于原始数组的长度——部分拷贝

如果新数组的长度等于原始数组的长度——完全拷贝

如果新数组的长度大于原始数组的长度——完全拷贝+补上默认初始化值0

import java.util.Arrays;

public class test40 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] ints1 = Arrays.copyOf(ints, 5);
        System.out.println(Arrays.toString(ints1));  //[1, 2, 3, 4, 5]
    }
}

在这里插入图片描述

Arrays.copyOfRange()

范围:包头不包尾

import java.util.Arrays;

public class test40 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] ints1 = Arrays.copyOfRange(ints, 3, 5);
        System.out.println(Arrays.toString(ints1));  //[4, 5]
    }
}

在这里插入图片描述

Arrays.fill()

import java.util.Arrays;

public class test40 {
    public static void main(String[] args) {
        int[] ints=new int[10];
        Arrays.fill(ints,0);
        System.out.println(Arrays.toString(ints));  //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    }
}

在这里插入图片描述

Arrays.sort()

默认使用升序排序。

底层使用的是快速排序。

import java.util.Arrays;

public class test40 {
    public static void main(String[] args) {
        int[] ints = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};
        Arrays.sort(ints);
        System.out.println(Arrays.toString(ints));  //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]
    }
}

在这里插入图片描述

要想改变排序顺序:

在这里插入图片描述

第二个参数是一个接口,在调用方法的时候,要传递这个接口的实现类对象,作为排序的规则。

底层原理:插入排序+二分查找

默认把0索引的数据当作是有序的序列,1索引到最后是无序的序列。

遍历无序序列里面的每一个元素,假设当前遍历的元素是A,

利用二分查找确定A的插入点,拿着A跟插入点的元素进行比较,

比较的规则是Comparator<>(),

如果方法返回值是负数,拿着A继续跟前面的数据进行比较,

如果方法返回值是正数,拿着A继续跟后面的数据进行比较,

如果方法返回值是0,拿着A继续跟后面的数据进行比较,

直到确定A的最终位置。

compare(Integer o1, Integer o2):

o1:表示在无序序列中,遍历得到的每一个元素

o2:有序序列中的元素

返回值:

负数:表示当前要插入的元素小,放在前面

正数:表示当前要插入的元素大,放在后面

0:表示当前要插入的元素跟当前元素一样,也是放在后面

升序排序
import java.util.Arrays;
import java.util.Comparator;

public class test40 {
    public static void main(String[] args) {
        Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};
        Arrays.sort(integers, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
        System.out.println(Arrays.toString(integers));  //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]
    }
}
降序排序
import java.util.Arrays;
import java.util.Comparator;

public class test40 {
    public static void main(String[] args) {
        Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};
        Arrays.sort(integers, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(Arrays.toString(integers));  //[10, 9, 8, 7, 6, 5, 4, 4, 3, 2, 1, 0]
    }
}
  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值