Java算法API——Arrays类常用方法

  1. String toString(数组)

    1. 说明:把数组拼接成一个字符串(底层为StringBuilder)
    2. 代码:
      int[] nums = {0,1,2,3,4,5,6,7,8,9};
      String s = Arrays.toString(nums);
      System.out.println(s);

      结果:

      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. int binarySearch(数组,查找的元素)

    1. 说明:二分查找元素
    2. 代码:
      int[] nums = {0,1,2,3,4,5,6,7,8,9};
      System.out.println(Arrays.binarySearch(nums,2));
      System.out.println(Arrays.binarySearch(nums,10));

      结果:

      2
      -11

      注意:

      二分查找前提是数组中元素必须是升序的;
      如果要查找的元素存在,返回索引值;
      如果要查找的元素不存在,返回-(插入点)-1
      *插入点(insertion point):该元素应该存在的索引值,如 2 在[0,1,3]的插入点为 2
  3. int[] copyOf(原数组,新数组长度)

    1. 说明:拷贝数组(底层为System.arrayCopy())
    2. 代码:
      int[] nums = {0,1,2,3,4,5,6,7,8,9};
      int[] newnums1 = Arrays.copyOf(nums, nums.length);
      int[] newnums2 = Arrays.copyOf(nums,5);
      int[] newnums3 = Arrays.copyOf(nums,12);
      System.out.println(Arrays.toString(newnums1));
      System.out.println(Arrays.toString(newnums2));
      System.out.println(Arrays.toString(newnums3));

      结果:

      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      [0, 1, 2, 3, 4]
      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0]

      注意:
      if 新数组length<老数组length:部分copy
      if 新数组length==老数组length:完全copy
      if 新数组length>老数组length:补充默认初始值

  4. int[] copyOfRange(原数组,起始索引,结束索引)

    1. 说明:拷贝数组(指定范围)
    2. 代码:
      int[] nums = {0,1,2,3,4,5,6,7,8,9};
      int[] newnums1 = Arrays.copyOfRange(nums,1,5);
      System.out.println(Arrays.toString(newnums1));

      结果:

      [1, 2, 3, 4]

      注意:
      包左不包右

  5. void fill(数组,元素)

    1. 说明:填充数组(底层for循环)
    2. 代码:
      int[] nums = {0,1,2,3,4,5,6,7,8,9};
      Arrays.fill(nums,20);
      System.out.println(Arrays.toString(nums));

      结果:

      [20, 20, 20, 20, 20, 20, 20, 20, 20, 20]

  6. void sort(数组)

    1. 说明:默认方式对数组排序(底层为快速排序)
    2. 代码:
      int[] nums = {2,3,8,9,7,6,5,4,0,1};
      Arrays.sort(nums);
      System.out.println(Arrays.toString(nums));

      结果:

      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  7. void sort(数组,排序规则)

    1. 说明:按指定方式对数组排序
    2. 代码:
      Integer[] nums = {2,3,8,9,7,6,5,4,0,1};
      Arrays.sort(nums, new Comparator<Integer>() {
          @Override
          public int compare(Integer o1, Integer o2) {
              return o1-o2;
          }
      });

      结果:
      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    3. 底层原理:
      利用插入排序+二分查找 排序;
      默认把0索引当做有序序列,1索引到最后为无序序列;
      遍历无序序列得到每个元素,假设当前遍历得到的元素为A元素,使用二分查找把A往有序序列中插入,拿A与插入点元素比较,比较的规则就是compare方法体;

      参数o1:无序序列遍历得到的每个元素
      参数o2:有序序列中的元素

      if 方法的返回值<0 A为小,放前面,拿A与前面的数据比较;
      if 方法的返回值>=0 A为大,放后面,拿A与后面的数据比较;
      直到确定A的最终位置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值