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

文章目录

    • Arrays
      • Arrays.toString()
      • Arrays.binarySearch()
      • Arrays.copyOf()
      • Arrays.copyOfRange()
      • Arrays.fill()
      • Arrays.sort()
        • 升序排序
        • 降序排序

Arrays

操作数组的工具类。

Java学习笔记(七)——操作数组工具类Arrays_第1张图片

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]
    }
}

Java学习笔记(七)——操作数组工具类Arrays_第2张图片

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);
    }
}

Java学习笔记(七)——操作数组工具类Arrays_第3张图片

Java学习笔记(七)——操作数组工具类Arrays_第4张图片

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]
    }
}

Java学习笔记(七)——操作数组工具类Arrays_第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]
    }
}

Java学习笔记(七)——操作数组工具类Arrays_第6张图片

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]
    }
}

Java学习笔记(七)——操作数组工具类Arrays_第7张图片

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]
    }
}

Java学习笔记(七)——操作数组工具类Arrays_第8张图片

要想改变排序顺序:

Java学习笔记(七)——操作数组工具类Arrays_第9张图片

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

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

默认把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]
    }
}

你可能感兴趣的:(学习笔记,java,学习,笔记)