ToB企服应用市场:ToB评测及商务社交产业平台

标题: 数组 [打印本页]

作者: 笑看天下无敌手    时间: 2022-8-28 14:00
标题: 数组
 
数组介绍:

数组的声明和创建:

数组赋值机制:  


数组的小细节:

for-Each循环:

  1.         int[] nums = {4,-1,9, 10,23};
  2.         //for-Each循环,nums表示数组,num表示数组里的每一个元素
  3.         for (int num : nums) {
  4.             System.out.println(num);
  5.         }
复制代码
反转数组:

  1.         int[] nums = {4,-1,9, 10,23};
  2.         int temp = 0; //暂时保存
  3.         for (int i = 0; i < nums.length/2; i++) {
  4.             temp = nums[nums.length - 1  -i ];//保存4下标
  5.             nums[nums.length -1 -i] = nums[i];//把0下标给4下标
  6.             nums[i] = temp;//0下标获取4下标
  7.         }
  8.         for (int num : nums) {
  9.             System.out.println(num);
  10.         }
复制代码
数组拷贝:
  1. int[] num = {4,-1,9, 10,23};//被拷贝
  2.         int[] nums = new int[num.length];//创建一共和被拷贝数组一样大小数组
  3.         for (int i = 0; i < nums.length; i++) {
  4.             nums[i] = num[i];//拷贝
  5.         }
  6.         nums[0] = 200;//改变nums的数,不会影响到num
  7.         
  8.         for (int i = 0; i < nums.length; i++) {
  9.             System.out.println(nums[i]);
  10.         }
复制代码
二维数组:

  1.      int[][] nums = {{1,2},{3,4},{5,6}};//创建二维数组
  2.         System.out.println(nums.length);//长度为3,因只是算一个一个大括号
  3.         System.out.println(nums[0][0]);//获取第一个二维数组中,的第一个数组元素
  4.         for (int i = 0; i < nums.length; i++) {//循环3次 0-1-2
  5.             for (int j = 0; j < nums.length -1; j++) { //循环2次 0-1
  6.                 System.out.println(nums[i][j]);//获取二维数组所有元素
  7.             }
  8.         }
复制代码

Arrays[儿微史]工具类:

  1.         double[] nums = {1.1,1.2,66,6,99.9};
  2.         System.out.println(Arrays.toString(nums));//输出数组所有元素
  3.         Arrays.sort(nums);//给数组排序
  4.         System.out.println(Arrays.toString(nums));
  5.         Arrays.fill(nums,0);//给数组填充,结果就是全部是0
  6.         Arrays.fill(nums,2,4,0);//给数组填充2-4的下标
  7.         System.out.println(Arrays.toString(nums));
复制代码
 
冒泡排序(重点):

  1. //冒泡排序 - 从小到大 - 从大到小
  2.         //优化:通过boolean类型变量来判断数组是否是顺序
  3.         int[] ares = {1,2,3,4,5,6,7};
  4.         int temp = 0;//暂时保存
  5.         for (int i = 0; i < ares.length - 1; i++) {//循环4次,-1是因为长度是7,实际循环6次,从0开始所以-1
  6.             boolean king = false; //没有交换位置为false
  7.             for (int j = 0; j < ares.length - i - 1; j++) { //
  8.                 if(ares[j] > ares[j+1]){ //if条件不成立返回false
  9.                     System.out.println("参数是否交换");
  10.                     temp = ares[j]; //暂时保存
  11.                     ares[j] = ares[j+1];
  12.                     ares[j+1] = temp;
  13.                     king = true; //交换位置了为true,if判断返回的值是false和true,不满足条件肯定是false
  14.                 }
  15.             }
  16.             if(!king){
  17.                 System.out.println("参数代码");//输出此代码,代表没有交换
  18.                 break;
  19.             }
  20.         }
  21.         System.out.println(Arrays.toString(ares));
复制代码
稀疏数组:

  1. int[][] ares = new int[11][11]; // 列[9]---行[11]
  2.       ares[1][2] = 1;
  3.       ares[2][3] = 2;
  4.       //1.输出数组
  5.         for (int[] are: ares) {//11给元素
  6.             for (int a : are) {//11个元素里面的元素
  7.                 System.out.print(a+"\t");//打印11个元素
  8.             }
  9.             System.out.println();
  10.         }
  11.       //2.转换为稀疏数组-就是获取有值的个数
  12.         int num = 0;
  13.         for (int i = 0; i < ares.length; i++) {
  14.             for (int j = 0; j < ares.length; j++) {
  15.                 if(ares[i][j]!=0){
  16.                     num++;
  17.                 }
  18.             }
  19.         }
  20.         System.out.println("有效值:"+num);
  21.       //3.创建一个存放稀疏数组的,数组
  22.         int[][] array2 = new int[num+1][3];
  23.         array2[0][0] = 11;
  24.         array2[0][1] = 11;
  25.         array2[0][2] = num;
  26.         //3.1.遍历数组,将非零的值放到稀疏数组
  27.         //{{11111111...},{1111...},.....}
  28.         int count = 0;//记录应该放到稀疏数组的第几行
  29.         for (int i = 0; i < ares.length; i++) {//遍历的是每一个二维数组里面的一维数组
  30. //            System.out.println(i);//遍历11次
  31.             for (int j = 0; j < ares[i].length; j++) {//ares[i].length;遍历的是一维数组里面的元素
  32.                 //获取有效元素
  33.                 if(ares[i][j]!=0){//判断了整个二维数组,不等于零的值
  34.                     ++count;//count变量是记录每增加一行数据,应该放到哪一列中
  35.                     array2[count][0] = i;
  36.                     System.out.println("::::"+count);
  37.                     array2[count][1] = j;
  38.                     array2[count][2] = ares[i][j];
  39.                 }
  40.             }
  41.         }
  42.         //4.输出稀疏数组
  43.         System.out.println("稀疏数组");
  44.         for (int i = 0; i < array2.length; i++) {
  45.             System.out.println(array2[i][0]+"\t"+
  46.                     array2[i][1]+"\t"+
  47.                     array2[i][2]+"\t");
  48.         }
  49.         //还原稀疏数组
  50.         System.out.println("=====还原稀疏数组=====");
  51.         //1.读取稀疏数组
  52.         int[][] array3 = new int[array2[0][0]][array2[0][1]];//大小11,11
  53.         //2.给其中元素还原它的值
  54.         for (int i = 1; i < array2.length; i++) {//遍历稀疏数组
  55.             array3[array2[i][0]][array2[i][1]] = array2[i][2];//给坐标,赋值操作,0是列坐标,1行坐标,2是值
  56.         }
  57.         //3.打印还原数组
  58.         for (int[] are: array3) {//11给元素
  59.             for (int a : are) {//11个元素里面的元素
  60.                 System.out.print(a+"\t");//打印11个元素
  61.             }
  62.             System.out.println();
  63.         }
复制代码
案例应用
  1.         //保存26之母到数组
  2.         //char是用unicode码,所有可以通过加1来实现字母的赋值
  3.         char[] chars = new char[26];
  4.         for (int i = 0; i < chars.length; i++) { //循环26次
  5.             chars[i] = (char)('A'+i); //i是int类型使用要强转
  6.         }
  7.         for (int i = 0; i < chars.length; i++) {
  8.             System.out.println(chars[i]);
  9.         }
  10.         //求出最大的数,得到下标
  11.         int[] nums = {4,-1,9, 10,23};
  12.         int max = nums[0]; //假设一个最大值
  13.         int maxIndex= 0; //获取下标
  14.         for (int i = 0; i < nums.length; i++) {
  15.             if(max < nums[i]){
  16.                 max = nums[i];
  17.                 maxIndex = i;
  18.             }
  19.         }
  20.         System.out.println(max);
  21.         System.out.println(maxIndex);
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4