Java基础-04-数组
数组
一.数组的声明与创建
int [] arrys1 = new int[10];
Scanner scanner = new Scanner(System.in);
for(int i=0;i<arrys1.length;i++){
arrys1[i] = scanner.nextInt();
}
scanner.close();
for(int i=0;i<arrys1.length;i++){
System.out.println(arrys1[i]);
}
二.三种初始化和内存分析
//静态初始化
int[] a = {1,2,3};
//动态初始化 (包含了默认初始化)
int[] b = new int[10];

三.Arrays类
常用方法:
- 排序:sort
- 填充:fill
- 转为字符串:tostring
- 判断元素值是否相等:equals
- 对排序好的数组进行二分查找:binarySearch
四.稀疏数组
//初始化原始数组arry1
int[][] arry1 = new int[11][11];
arry1[1][1] = 1;
arry1[2][1] = 2;
/*
0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
*/
System.out.println("打印原始数组array1");
// 遍历元素 遍历对象
for(int[] ints : arry1){
for(int i : ints){
System.out.print(i + "\t");
}
System.out.println();
}
System.out.println("====================");
System.out.println("压缩数据 将arry1转为稀疏数组");
//计数有效元素个数
int count = 0;
for(int i=0; i < 11; i++){
for(int j=0; j < 11; j++){
if(arry1[i][j] != 0)
count++;
}
}
System.out.println("有效元素个数为" + count);
//创建稀疏数组
//count + 1行;3列、
//第一行储存原始数组的信息:行数,列数,有效元素个数
//后面的行储存有效元素的信息:行序号,列序号,值
//第一行
int [][] arryXi = new int[count+1][3];
//行数
arryXi [0][0] = arry1.length;//调用b.length方法,返回的则是b数组的行数
//列数
arryXi [0][1] = arry1[0].length;//b[0].length方法则返回的是0行所代表的长度(即b数组的列数)
//有效元素个数
arryXi [0][2] = count;
//其他行
int w = 1;
for(int i=0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (arry1[i][j] != 0) {
//记录有效元素所在 行
arryXi[w][0] = i;
//记录有效元素所在 列
arryXi[w][1] = j;
////记录有效元素的 值
arryXi[w][2] = arry1[i][j];
w++;
}
}
}
//输出稀疏数组
for(int[] ints : arryXi){
for(int i : ints){
System.out.print(i + "\t");
}
System.out.println();
}
/*
11 11 2
1 1 1
2 1 2
*/
System.out.println("====================");
System.out.println("根据稀疏数组还原原始数据");
//1.读取稀疏数组
int[][] arry2 = new int[arryXi[0][0]][arryXi[0][1]];
//2.还原有效元素的值
for(int i=1; i < arryXi.length; i++){
// 行 列 值
arry2[ arryXi[i][0] ][ arryXi[i][1] ] = arryXi[i][2];
}
for(int[] ints : arry2){
for(int i : ints){
System.out.print(i + "\t");
}
System.out.println();
}
/*
0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
*/

数组
浙公网安备 33010602011771号