Arrays

操作数组的工具类:

Arrays_第1张图片

 

import java.util.Arrays;

public class MyArraysDemo1 {
    public static void main(String[] args) {
        //toString将数组变成字符串
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        System.out.println(Arrays.toString(arr));
        //二分查找查找元素
        //binarySearch:1.二分查找的前提是数组中元素必须有序,数组中元素必须是升序的。
        //2.如果要查找的元素存在,则返回真实的索引,若是不存在,则返回-的插入点-1;
        System.out.println(Arrays.binarySearch(arr,10));
        System.out.println(Arrays.binarySearch(arr,2));
        //copyOf:拷贝数组
        int[] newArr1=Arrays.copyOf(arr,20);
        System.out.println(Arrays.toString(newArr1));
        //拷贝数组copyOfRange
        //包头不包尾,包左不包右;
        int[] newArr2=Arrays.copyOfRange(arr,0,9);
        System.out.println(Arrays.toString(newArr2));
        //fill:填充数组
        Arrays.fill(arr,100);
        System.out.println(Arrays.toString(arr));
        //sort排序:默认情况下,给基本数据类型进行升序排列
        int[] arr2={10,2,3,5,6,1,7,8,4,9};
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));
        /*[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        9
        1
       [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
       [1, 2, 3, 4, 5, 6, 7, 8, 9]
       [100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
       [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
       */

    }

}

import java.util.Arrays;
import java.util.Comparator;

public class MyArraysDemo2 {
    public static void main(String[] args) {
        Integer[] arr={2,3,1,5,6,7,8,4,9};
        //第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象,作为排序的规则;
        //但是这个实现类,我只要使用一次,所以没必要单独写一个类,直接采取匿名内部类的方式就可以了。
        //底层原理:
        //利用插入排序和二分查找的方式进行排序;
        //默认把0索引的数据当作是有序的序列;1索引到最后是无序的序列;
        //遍历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素;
        /*
        把A元素往有序序列中进行插入,在插入的时候,是利用二分查找确定A元素的插入点;
        拿着A元素,跟插入点的元素进行比较,比较的规则就是Compare方法的方法体;
        如果方法的返回值是负数,拿着A继续跟前面的数据进行比较;
        如果方法的返回值是正数,拿着A继续跟后面的数据进行比较;
        如果方法的返回值是0,也拿着A跟后面的数据进行比较;
        直到能确定A的最终位置为止;
         */
        Arrays.sort(arr, new Comparator() {
            @Override
            public int compare(Integer o1, Integer o2) {
                System.out.println("-------------");
                System.out.println("o1:"+01);
                System.out.println("o2:"+o2);
                return o1-o2;
            }
        });
        System.out.println(Arrays.toString(arr));
        //o1-o2是升序排列
        //o2-o1是降序排列
    }
}

你可能感兴趣的:(java,c#,算法)