Java的Arrays类

Arrays类

  • 数组的工具类 java.util.Arrays

  • 由于数组对象本身没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。

  • 查看JKD帮助文档,在文档里看方法内容。

  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用而不用使用对象来调用。(是不用而不是不能)

  • 具有以下常用功能:

    • 给数组赋值:通过fill方法

    • 对数组排序:通过sort方法,按升序。

    • 比较数组:通过equals方法比较数组中元素值是否相等

    • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

  • 在IDEA里打开Arrays的源码查看它类的方法:在 import java.util.Arrays; 处按住 Ctrl 然后点击 Arrays → 在左下角往上处找到 structure → 点击进入便可看到关于 Arrays 的所有可用方法。

冒泡排序

package com.kuang.array;
import java.util.Arrays;
public class ArrayDemo{
   public static void main(Sting[] args){
       int[] a = {1,5,4,12,9,64,20,128};
       int[] sort = sort(a);
       System.out.println(Arrays.toString(sort));
  }
   public static int[] sort(int[] array){
       //n个数只用比较n-1次即可
       int temp = 0;
       for (int i=0; i<array.length-1; i++){
           boolean flag = false;//减少无意义比较
           for (int j=0; j<array.length-1-i; j++){
               if (array[j+1] > array[j]){
                   temp = array[j];
                   array[j] = array[j+1];
                   array[j+1] = temp;
                   flag = true;
              }
          }
           if (flag == false){
               break; //没有次序交换就是后面的排完不用再排了
          }
      }
       return array;
  }
}

稀疏数组

  • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。

  • 稀疏数组的处理方式是

    • 记录数组一共有几行几列,有多少个不同值。

    • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模。

image-20211024115212376


package com.kuang.array;
public class ArrayDemo{
   public static void main(String[] args){
       //创建一个二维数组 11*11 0:没有棋子 1:黑棋 2:白棋
       int[][] array = new int[11][11];
       array[1][2] = 1;
       array[2][3] = 2;
       System.out.println("输出原始的数组");
       
       for (int[] ints : array){
           for (int anInt : ints){
               System.out.println(anInt + "\t");
          }
           System.out.println();
      }
       System.out.println("=============")
       //转换为稀疏数组保存
       int sum = 0;
       for (int i=0; i<11; i++){
           for (int j=0; j<11; j++){
               if (array[i][j] != 0){
                   sum++;
              }
          }
      }
       System.out.println("有效值的个数:" + sum);
       //数组大小一旦确定不可改变所以要先计算其大小才能确定位置
       //知道大小后创建稀疏数组的数组
       int[][] arrays = new int[sum+1][3];
       arrays[0][0] = 11;
       arrays[0][1] = 11;
       arrays[0][2] = sum;
       int count = 0;
       for (int i=0; i<array.length; i++){
           for (int j=0; j<array[i].length; j++){
               if (array[i][j] != 0){
                   ++count;
                   arrays[count][0] = i;
                   arrays[count][1] = j;
                   arrays[count][2] = array[i][j];
              }
          }
      }
       System.out.println("稀疏数组");
       for (int i=0; i<arrays.length; i++){
           System.out.println(arrays[i][0] + "\t" + arrays[i][1] + "\t" + arrays[i][2] + "\t");
      }
       System.out.println("==============");
       System.out.println("revock");
       //read pervasion
       int[][] _array = new int[arrays[0][0]][arrays[0][1]];
       for (int i=1; i<arrays.length; i++){
           _array[arrays[i][0]][arrays[i][1]] = arrays[i][2];
      }
       System.out.println("输出还原的数组");
       for (int inIt : _array){
           for (int anIn : inIt){
               System.out.print(anIn + "\t");
          }
           System.out.println();
      }
  }
}

 

posted on   愿将过往均储藏  阅读(431)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示