zoukankan      html  css  js  c++  java
  • Arrays工具类详解

    简述

      Arrays 是JDK提供的操作数组的工具类,array类提供许多操作数组的静态方法。

    Arrays.toStirng()

      Arrays.toString()方法可以把数组内各元素值拼接为字符串

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

    拷贝数组  

      数组除了用clone方法拷贝,还可以用Arrays工具类的copyOf()和copyOfRange()进行拷贝。

      copyOf()第一个参数为要拷贝的数组,第二个参数为新数组的长度

    int[] arr1 = {1,2,3,4,5};
    int[] arr2 = Arrays.copyOf(arr1, 10);
    System.out.println(Arrays.toString(arr2));

       copyOfRange(x,l,r)意味将数组x的[l,r)区间拷贝出来

    int[] arr1 = {1,2,3,4,5};
    int[] arr2 = Arrays.copyOfRange(arr1, 1,3);
    System.out.println(Arrays.toString(arr2));

    排序

      Arrays.sort(arr);方法会将数组进行升序排序

    int[] arr1 = {6,3,2,1,5};
    Arrays.sort(arr1);
    System.out.println(Arrays.toString(arr1));

      如果要进行自定义排序,如果数组内元素类型是对象,则需要实现Comparable接口并重写compareTo方法。

      该方法的返回值是 int 。如果返回值为正数,则表示当前对象(调用该方法的对象)比 obj 对象“大”,放在右边。反之“小”,放在左边。如果为零的话,则表示两对象相等。

      如果是基本类型,则只能为升序,若要降序或者其他自定义规则排序,我们不能重写compareTo方法因为我们不能动JDK里的类,则需要在第二个参数传一个Comparator类用于设定比较规则。

      例如我们要安装绝对值大小进行升序排序,同理返回负数代表t1在左边,正数代表t1在右边

    Integer[] arr = {-6,-4,3,7,2};
    Arrays.sort(arr,new Comparator<>(){
        @Override
        public int compare(Integer t1, Integer t2) {
            if(Math.abs(t1) < Math.abs(t2)) return -1;
            return 1;
        }
    });
    System.out.println(Arrays.toString(arr));

    比较数组

      数组的equals并没有进行重写,所以比较的是地址值

      Arrays提供equals静态方法用于比较两数组内元素值是否一致

    Integer[] arr1 = {-6,-4,3,7,2};
    Integer[] arr2 = {-6,-4,3,7,2};
    System.out.println(arr1.equals(arr2));
    System.out.println(Arrays.equals(arr1, arr2));

     二分查找

      int binarySearch(Array[] array, int fromIndex, int toIndex, data key),参数2和3可以省略

      在array数组内在[fromIndex,toIndex)下标内查询key,若找到则返回key在数组中的索引值

    Integer[] arr1 = {1,2,3,4,5};
    int i = Arrays.binarySearch(arr1,2);
    System.out.println(i);

       若没找到则返回-(插入位置的索引+1)

    Integer[] arr1 = {1,3,3,4,5};
    int i = Arrays.binarySearch(arr1,2);
    System.out.println(i);

     

    一点一点积累,一点一点蜕变!
  • 相关阅读:
    多种方式实现数组的扁平化处理
    利用node中的内置模块fs实现对简单文件的读取 拷贝 创建等功能
    浅谈es5和es6中的继承
    js之冒泡排序与快速排序
    IE5,IE6,IE7,IE8的css兼容性列表[转自MSDN]
    css3 动画
    各种浏览器css hack
    解决li在ie,firefox中行高不一致问题
    Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
    png-24在ie6中的几种透明方法
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/15048625.html
Copyright © 2011-2022 走看看