zoukankan      html  css  js  c++  java
  • JAVA的学习日记11

    Java数组的使用

    For-Each循环:即增强for循环,一般用来打印数组元素,因为没有下标
    数组做方法入参
    数组做返回值

    package com.cdoudou.Array;
    
    public class Demo04 {
        public static void main(String[] args) {
    
            int[] arrays = {1,2,3,4,5};
    
    
            printArray(arrays);
            int[] result = reverse(arrays);
            for (int i : result) {
                System.out.print(i+" ");
            }
    
        }
    
        //反转数组
        public static int[] reverse(int[] arrays){
            int[] result = new int[arrays.length];
            for(int i = 0,j = arrays.length-1; i < arrays.length; i ++, j --){
                result[j] = arrays[i];
            }
            return result;
        }
    
    
        public static void printArray(int[] arrays){
            //打印数组元素
            for(int i = 0; i < arrays.length; i ++){
                System.out.print(arrays[i] + " ");
            }
            System.out.println();
        }
    }
    
    

    多维数组

    • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一位数组,其每一个元素都是一个一维数组
    • 二维数组
      int[][] = new int[2][5];
    • 解析:上面的二维数组a可以看成是一个两行五列的数组

    package com.cdoudou.Array;
    
    public class Demo05 {
        public static void main(String[] args) {
            //二维数组
    
            int[][] arrays = {{1,2}, {3,4}};
    
            System.out.println(arrays[0][1]);   //2
            printArray(arrays[0]);              //1、2
    
        }
        public static void printArray(int[] arrays){
            //打印数组元素
            for(int i = 0; i < arrays.length; i ++){
                System.out.print(arrays[i] + " ");
            }
            System.out.println();
        }
    }
    

    Arrays 类

    • 数组的工具类java.util.Arrays
    • 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。
    • 查看JDK帮助文档
    • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以使用类名进行调用,而"不用"使用对象来调用【是"不用"而不是"不能"】
    • 具有下面的常用功能:

    给数组赋值:通过fill方法,对数组进行填充
    给数组排序:通过sort方法,按升序
    比较数组:通过equals方法比较数组中元素值是否相等
    查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作

    冒泡排序

    • 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序:

    详情狂野参考以下博客
    c/c++版本
    Java版本

    • 冒泡的代码还是比较简单的,一共两层循环,外层冒泡轮数,里层依次比较,时间复杂度为O(n^2)

    稀疏数组

    • 因为二维数组很多值默认为0,因此记录了很多没有意义的数据
    • 如何解决:稀疏数组

    稀疏数组的介绍:

    • 当一个数组中大部分元素为0,或者为同一值得数组时,可以使用稀疏数组来保存该数组。
    • 稀疏数组的处理方式:
      记录数组一共有几行几列,有多少个不同值
      把具有不同值得元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

    package com.cdoudou.Array;
    
    public class Demo07 {
        public static void main(String[] args) {
            //1.创建一个二维数组 11 * 11    0:没有棋子  1.黑棋    2.白棋
            int[][] array1 = new int[11][11];
            array1[1][2] = 1;
            array1[2][3] = 2;
            //输出原始数组
            System.out.println("原始数组为:");
    
            for(int[] ins : array1){
                for(int inst : ins){
                    System.out.print(inst + "	");
                }
                System.out.println();
            }
    
            //转换为稀疏数组保存
            //获取有效值的个数
            int sum = 0;
            for (int i = 0; i < 11; i ++) {
                for(int j = 0; j < 11; j ++){
                    if(array1[i][j] != 0){
                        sum ++;
                    }
                }
            }
            System.out.println("有效的个数为:"+ sum);
    
            //2.创建一个稀疏数组的数组
            int[][] array2 = new int[sum+1][3];
            array2[0][0] = 11;
            array2[0][1] = 11;
            array2[0][2] = sum;
    
    
            //3.遍历二维数组,将非零的值,存放稀疏数组中
            int count = 0;
            for (int i = 0; i < array1.length; i++) {
                for (int j = 0; j < array1.length; j++) {
                    if(array1[i][j] != 0){
                        count ++;
                        array2[i][0] = i;
                        array2[i][1] = j;
                        array2[i][2] = array1[i][j];
                    }
                }
            }
    
            //4.输出稀疏数组
            System.out.println("稀疏数组为:");
            for (int i = 0; i < array2.length; i++) {
                System.out.println(array2[i][0] + "	" + array2[i][1] + "	" + array2[i][2] + "	");
            }
    
    
        }
    }
    
    
    明天就该面向"对象"了,GoGoGo
  • 相关阅读:
    置入式广告 场景中并无实际对应物
    文本自动摘要的方法研究
    [翻译]用DataSource控件以外的方法为GridView提供数据
    留个纪念
    新街口
    [翻译]SharePoint2007中创建Forms认证方式的站点
    路不一定是死的
    网站转移小记
    [转载]什么时候使用webservice
    城市周末的夜还是那么美
  • 原文地址:https://www.cnblogs.com/cdoudou/p/13674422.html
Copyright © 2011-2022 走看看