首页 > 其他分享 >6、Arrays类

6、Arrays类

时间:2022-09-19 21:25:42浏览次数:63  
标签:arr Arrays System 数组 Integer asList

Arrays类

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

  2. 常用方法

    • toString 返回数组的字符串形式 Arrays.toString(arr)

      Integer[] integers = {1, 20, 90};
      System.out.println(Arrays.toString(integers)); //[1, 20, 90]
      
    • sort 排序(自然排序和定制排序)

      Integer arr[] = {1, -1, 7, 0, 89};
      //1. 因为数组是引用类型,所以通过sort排序后,会直接影响到 实参 arr
      //2. sort重载的,也可以通过传入一个接口 Comparator 实现定制排序
      //3. 调用 定制排序 时,传入两个参数 (1) 排序的数组arr
      //   (2) 实现了Comparator接口的匿名内部类,要求实现 compare方法
      //4. 这里体现了接口编程的方式,看看源码,就明白
      //      源码分析
      // (1) Arrays.sort(arr, new Comparator()
      // (2) 最终到 TimSort类 private static <T> void binarySort(T[] a, int lo, int hi, int start,
      //                                       Comparator<? super T> c)
      // (3) 执行到 binarySort 方法的代码,会根据动态绑定机制 c.compare()执行我们传入的
      //     匿名内部类的 compare()
      //          while (left < right) {
      //                int mid = (left + right) >>> 1;
      //                if (c.compare(pivot, a[mid]) < 0)
      //                    right = mid;
      //                else
      //                    left = mid + 1;
      //            }
      // (4) new Comparator() {
      //            @Override
      //            public int compare(Object o1, Object o2) {
      //                Integer i1 = (Integer)o1;
      //                Integer i2 = (Integer)o2;
      //                return i2 - i1;
      //            }
      //        }
      // (5) public int compare(Object o1, Object o2) 返回的值>0 还是 <0
      //     会影响整个排序结果
      //Arrays.sort(arr);  // 默认排序
      //定制排序
      Arrays.sort(arr, new Comparator() {
          @Override
          public int compare(Object o1, Object o2) {
              Integer i1 = (Integer)o1;
              Integer i2 = (Integer)o2;
              return i1 - i2;
          }
      });
      System.out.println(Arrays.toString(arr));//[-1, 0, 1, 7, 89]
      
      
    • binarySearch 通过二分搜索法进行查找,要求必须排好序

      //1. 要求该数组是有序的,如果该数组是无序的,不能使用binarySearch
      //2. 如果数组中不存在该元素,就返回 return -(low + 1); low是如果存在,它应该在的位置
      Integer[] arr = {1, 2, 90, 123, 567};
      int index = Arrays.binarySearch(arr,2);
      System.out.println("index=" + index);
      
    • copyOf 数组元素的复制

      //1. 从 arr 数组中,拷贝 arr.length 个元素到 newArr数组中
      //2. 如果拷贝的长度 > arr.length 就在新数组的后面 增加 null
      //3. 如果拷贝长度 < 0 就抛出异常NegativeArraySizeException
      //4. 该方法的底层使用的是 System.arraycopy()
      Integer[] newArr = Arrays.copyOf(arr,arr.length);
      
    • fill 数组元素的填充

      //1. 使用 99 去填充 num数组,可以理解成是替换原来的元素
      Integer[] num = new Integer[]{9, 3, 2};
      Arrays.fill(num,99);
      System.out.println(Arrays.toString(num)); //[99, 99, 99]
      
    • equals 比较两个元素内容是否完全一致

      //1. 如果arr 和 arr2 数组的元素一样,则方法返回true
      //2. 如果不是完全一样,就返回false
      Boolean equals = Arrays.equals(arr,arr2);
      System.out.println("equals=" + equals); //equals=true
      
    • asList 将一组值,转换成list

      //1. asList方法,会将(2,3,4,5,6,1)数据转成一个List集合
      //2. 返回的 asList 编译类型 List(接口)
      //3. asList 运行类型 java.util.Arrays#ArrayList
      List asList = Arrays.asList(2,3,4,5,6,1);
      System.out.println("asList=" + asList);
      System.out.println("asList的运行类型" + asList.getClass());
      

标签:arr,Arrays,System,数组,Integer,asList
From: https://www.cnblogs.com/muzhe777/p/16709091.html

相关文章

  • Smallest Subarrays With Maximum Bitwise OR
    SmallestSubarraysWithMaximumBitwiseORYouaregivena0-indexedarray nums oflength$n$,consistingofnon-negativeintegers.Foreachindex$i$from$......
  • 【做题笔记】CF1288C Two Arrays
    ProblemCF1288CTwoArrays题目大意:构造两个长度为\(m\),值域为\(n\)的序列\(a,b\),满足\(a\)单调不降,\(b\)单调不升,且\(\foralli\in[1,m],a_i\leb_i\),求合......
  • Arrays.copyOfRange学习
    Arrays.copyOfRange的使用方法功能:实现数组的拷贝功能,将数组拷贝至另外一个数组参数:original:第一个参数为要拷贝的数组对象from:第二个参数为拷贝的开始位置(包含)to:第三......
  • Arrays.asList() 报UnsupportedOperationException异常
    Arrays中的asList方法将数组转为List<>之后,用remove和add方法会报UnsupportedOperationException异常1、asList是通过新建一个ArrayList来接收String[]的数值。  2......
  • java.lang.ArrayStoreException
    List<Object>ol=newArrayList<Object>();ol.add("aaa");/***java.lang.ArrayStoreException*java数组中包括不兼容的值抛出......
  • 【Java基础】操作数组的工具类Arrays
    1.常用方法方法描述booleanequals(int[]a,int[]b)判断两个数组是否相等,顺序不一样也返回falseStringtoString(int[]a)输出数组信息voidfill(int[]......
  • Randomizing Arrays and Queues
    您可以随机化动态数组、关联数组和队列。可以将它们声明为“rand”或“randc”,这将导致数组的所有元素被随机化。数组中的所有元素都是随机的,每次随机(调用randomize())会......
  • Java学习 (20) Java数组篇(04)Arrays类&冒泡排序&稀疏数组
    目录Arrays类语法实例冒泡排序语法实例具体讲解视频(狂神说Java)稀疏数组语法实例具体讲解视频(狂神说Java)Arrays类教组的工具类java.util.Arrays由于数组对象本身并没有......