Java的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,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
-
稀疏数组的处理方式是
-
记录数组一共有几行几列,有多少个不同值。
-
把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模。
-
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[