静态初始化:
int[] array = {1,2,3,4,5};
动态初始化:
int[] array = new int[10];
后续可根据需要为数组元素赋值
注: 动态初始化中包含默认初始化 即数组中的元素在被创建时已被赋初始值
注: 数组的长度在创建时就已确定且不可变
| 常用方法 | 返回类型 | 说明 |
| toString(array) | String | 将数组array转换为字符串 |
| sort(array) | void | 对数组array进行升序排列 |
| fill(array, value) | void | 将数组array中的所有元素替换为value |
| equals(array1, array2) | boolean | 判断数组array1与数组array2是否相等 |
| copyOf(array, length) | 同参数array | 将数组array复制为一个长length的新数组 |
| binarySearch(array, value) | int | 查询数组array中与value相等的元素的下标 |
注: 排序算法是由Vladimir Yaroslavskiy 丶Jon Bentley和Joshua Bloch提供的双轴快速排序
对于数组中存在大量重复元素时 使用稀疏数组存储数据可大大减少资源开销
另外 对于稀疏数组的说明均写在注释中 不再赘述
普通二维数组
- //普通二维数组
- int[][] normalArray = new int[5][5];
- normalArray[1][1] = 1;
- normalArray[1][3] = 1;
- //输出普通二维数组
- System.out.println("=====输出普通二维数组=====");
- for (int[] ints : normalArray){
- for (int i : ints) {
- System.out.print(i + "\t");
- }
- System.out.println();
- }

稀疏数组
稀疏数组三列分别代表: x坐标 y坐标 元素的值
- //稀疏数组
- int count = 0; //统计不为零的元素的个数
- for (int[] ints : normalArray){
- for (int i : ints) {
- if (i != 0) count++;
- }
- }
- //根据不为零的元素的个数创建稀疏数组
- //三列分别为 x坐标 y坐标 元素的值
- int[][] sparseArray = new int[count + 1][3];
- //为稀疏数组首行赋值
- sparseArray[0][0] = normalArray.length;
- sparseArray[0][1] = normalArray[0].length;
- sparseArray[0][2] = count;
- //为稀疏数组赋值
- int row = 0;
- for (int i = 0; i < normalArray.length; i++){
- for (int j = 0; j < normalArray[i].length; j++) {
- if (normalArray[i][j] != 0) {
- row++;
- sparseArray[row][0] = i;
- sparseArray[row][1] = j;
- sparseArray[row][2] = normalArray[i][j];
- }
- }
- }
- //输出稀疏数组
- System.out.println("=====输出稀疏数组=====");
- for (int[] ints : sparseArray){
- for (int i : ints) {
- System.out.print(i + "\t");
- }
- System.out.println();
- }

还原稀疏数组
- //还原稀疏数组
- int[][] restoreArray = new int[normalArray.length][normalArray[0].length];
- //因稀疏数组存在首行 故其实际存储不为零的元素的信息从第一行开始 故 i = 1
- for (int i = 1; i < sparseArray.length; i++){
- //sparseArray[i][0]表示x坐标 即行
- //sparseArray[i][1]表示y坐标 即列
- //sparseArray[i][2]表示元素的值
- restoreArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
- }
- //输出还原稀疏数组
- System.out.println("=====输出还原稀疏数组=====");
- for (int[] ints : normalArray){
- for (int i : ints) {
- System.out.print(i + "\t");
- }
- System.out.println();
- }

完整代码
- public class TEST {
- public static void main(String[] args) {
- //普通二维数组
- int[][] normalArray = new int[5][5];
- normalArray[1][1] = 1;
- normalArray[1][3] = 1;
- //输出普通二维数组
- System.out.println("=====输出普通二维数组=====");
- for (int[] ints : normalArray){
- for (int i : ints) {
- System.out.print(i + "\t");
- }
- System.out.println();
- }
-
- //稀疏数组
- int count = 0; //统计不为零的元素的个数
- for (int[] ints : normalArray){
- for (int i : ints) {
- if (i != 0) count++;
- }
- }
- //根据不为零的元素的个数创建稀疏数组
- //三列分别为 x坐标 y坐标 元素的值
- int[][] sparseArray = new int[count + 1][3];
- //为稀疏数组首行赋值
- sparseArray[0][0] = normalArray.length;
- sparseArray[0][1] = normalArray[0].length;
- sparseArray[0][2] = count;
- //为稀疏数组赋值
- int row = 0;
- for (int i = 0; i < normalArray.length; i++){
- for (int j = 0; j < normalArray[i].length; j++) {
- if (normalArray[i][j] != 0) {
- row++;
- sparseArray[row][0] = i;
- sparseArray[row][1] = j;
- sparseArray[row][2] = normalArray[i][j];
- }
- }
- }
- //输出稀疏数组
- System.out.println("=====输出稀疏数组=====");
- for (int[] ints : sparseArray){
- for (int i : ints) {
- System.out.print(i + "\t");
- }
- System.out.println();
- }
-
- //还原稀疏数组
- int[][] restoreArray = new int[normalArray.length][normalArray[0].length];
- //因稀疏数组存在首行 故其实际存储不为零的元素的信息从第一行开始 故 i = 1
- for (int i = 1; i < sparseArray.length; i++){
- //sparseArray[i][0]表示x坐标 即行
- //sparseArray[i][1]表示y坐标 即列
- //sparseArray[i][2]表示元素的值
- restoreArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
- }
- //输出还原稀疏数组
- System.out.println("=====输出还原稀疏数组=====");
- for (int[] ints : normalArray){
- for (int i : ints) {
- System.out.print(i + "\t");
- }
- System.out.println();
- }
- }
- }