数组
变量声明和创建
int[] array1=new int[]{}; string[][] array2=new string[][]{};
表示数组下标越界了,溢出了
静态初始化
//int[] array1=new int[]{1,2,3,4,5,6}; int[] array1={1,2,3,4,5,6};
动态初始化
int[] array2=new int[10];
二维数组
int[][] arr={{1,2},{2,3},{3,4},{5,6}}; //arr.length是行数 //arr.length[i]是第i行数组的长度(i从0开始)
遍历二维数组
int[][] arr={{1,2},{2,3},{3,4},{5,6}}; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[i].length;j++){ System.out.print(arr[i][j]+"\t"); } System.out.println(); }
Arrays类
-
打印数组元素
int[] array1={1,2,3,4,5,6}; System.out.println(Arrays.toString(array1));
-
给数组赋值
int[] array1=new int[10]; //给数组都赋值为10 Arrays.fill(array1,10); //使数组下标为5~9的值都为10 Arrays.fill(array1,5,9,10);
-
数组元素的拷贝
int[] array1={1,2,3,4,5,6}; int[] array3=new int[6]; //将数组array1当中的所有元素拷贝到新数组array3当中 //等长复制 int[] array3=Arrays.copyOf(array1,array.length); //截短复制 int[] array4 = Arrays.copyOf(array1, 5); //原始数组的区间复制(顾头不顾尾) int[] array5=Arrays.copyOfRange(array1,3,7);
-
无序数组的排列
Arrays.sort(array1); //排列下角标从5到7的顺序(顾头不顾尾) Arrays.sort(array1, 5, 8);
-
查询数组下角标
//注意:对数组执行二分搜索的前提是当前数组升序有 int index = Arrays.binarySearch(array1, 25);
-
判断两个数组是否相同
int[] array5 = new int[] {2,7,6,2,5,1,4,8,9,0}; int[] array6 = new int[] {0,7,6,2,5,1,4,8,9,2}; System.out.println(Arrays.equals(array5, array6));
冒泡排列法
public static int[] sort(int[] array){ int tmp=0; boolean flag=false; for (int i=0;i<array.length-1;i++){ for (int j=0;j<array.length-1-i;j++){ if (array[j+1]<array[j]){ tmp=array[j]; array[j]=array[j+1]; array[j+1]=tmp; flag=true; } } if (flag==false){ break; } } return array; } public static void main(String[] args) { int[] arr={1,23,25,63,36,32,15,51,8,4,9,10}; int[] sor=sort(arr); System.out.println(Arrays.toString(sor)); } }
细节("\t"," "的区别)
稀疏数组
public static void main(String[] args) { int[][] arr1=new int[11][11]; arr1[1][2]=1; arr1[2][3]=2; System.out.println("输出原数组:"); for (int[] arr2:arr1){ for (int arr3:arr2){ System.out.print(arr3+"\t"); } System.out.println(); } System.out.println("================================"); //换为稀疏数组 //获取有效值个数 int sum=0; for (int i=0;i<arr1.length;i++){ for (int j=0;j<arr1[0].length;j++){ if (arr1[i][j]!=0){ sum++; } } } System.out.println("有效值个数为:"+sum); int[][] array1=new int[sum+1][3]; array1[0][0]=11;//行 array1[0][1]=11;//列 array1[0][2]=sum; //有效值个数 //遍历稀疏数组 int count=0; for (int i=0;i<arr1.length;i++){ for (int j=0;j<arr1[0].length;j++){ if (arr1[i][j]!=0){ count++; array1[count][0]=i; array1[count][1]=j; array1[count][2]=arr1[i][j]; } } } System.out.println("稀疏数组:"); for (int[] aaa:array1){ for (int bbb:aaa){ System.out.print(bbb+"\t"); } System.out.println(); } System.out.println("==================================="); //还原 int[][] array2=new int[array1[0][0]][array1[0][1]]; for (int i=1;i<array1.length;i++){ array2[array1[i][0]][array1[i][1]]=array1[i][2]; } for (int[] a:array2){ for (int b:a){ System.out.print(b+"\t"); } System.out.println(); } }