美文网首页
重捡Java(三)数组

重捡Java(三)数组

作者: 我很惊讶 | 来源:发表于2020-05-04 22:41 被阅读0次

    python在处理数组字典这一类的数据的时候,有两个很强大的功能——“切片和构造器”
    但是在java中则更麻烦一些。

    声明创建数组

    Java的数组是一个固定长度的,包含了相同类型数据的容器。

    int values [];  //声明。此时未分配空间
    values = new int[6];  //创建,此时分配空间
    values = {18,62,68,82,65,9};  //赋值
    int values [] = new int[]{18,62,68,82,65,9};  //也可以写成一行
    

    访问数组

    数组通过下标访问,第一个数据的下标为0

    a[0] = 1; //为数组的第一个数赋值 
    

    可以通过循环遍历处理数组

    for (int i = 0; i < a.length; i++)// length获取数组长度的方法
                System.out.println(a[i]);
    }
    

    也可以这样遍历

    for(int c : a){
       System.out.println(c);// 这样就不用通过下表处理值了
    }
    

    数组排序

        public static void main(String[] args) {
            int values[] = new int[] { 18, 62, 68, 82, 65, 9 };
    
            // 排序
            Arrays.sort(values);
            System.out.println();
            for (int value : values) {
                System.out.print(value + " ");
            }
            // 降序
            int valuesDescp[] = new int[values.length];
            for (int i = 0; i <= values.length - 1; i++) {
                valuesDescp[i] = values[values.length - 1 - i];
                System.out.println("a:"+valuesDescp[i]);
                System.out.println("b:"+values[values.length - 1 - i]);
                
            }
            for (int value : valuesDescp) {
                System.out.print(value + " ");
            }
        }
    

    复制数组

    把一个数组的值,复制到另一个数组中

    System.arraycopy(src, srcPos, dest, destPos, length)
    
    src: 源数组
    srcPos: 从源数组复制数据的起始位置
    dest: 目标数组
    destPos: 复制到目标数组的起始位置
    length: 复制的长度
    
    public class HelloWorld {
        public static void main(String[] args) {
            int a [] = new int[]{18,62,68,82,65,9};
             
            int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
             
            //通过数组赋值把,a数组的前3位赋值到b数组
             
            //方法一: for循环
             
            for (int i = 0; i < b.length; i++) {
                b[i] = a[i];
            }
            
            //方法二: System.arraycopy(src, srcPos, dest, destPos, length)
            //src: 源数组
            //srcPos: 从源数组复制数据的起始位置
            //dest: 目标数组
            //destPos: 复制到目标数组的启始位置
            //length: 复制的长度       
            System.arraycopy(a, 0, b, 0, 3);
             
            //把内容打印出来
            for (int i = 0; i < b.length; i++) {
                System.out.print(b[i] + " ");
            }
     
        }
    }
    

    多维数组

    就是数组的元素还是数组

    int[][] a = new int[][]{
    {1,2},
    {3,4}
    }
    

    也就是

    int[0][0] = 1;
    int[0][1] = 2;
    int[1][0] = 3
    int[1][1] = 4;
    

    从最外层开始依次往里套娃
    有二维自然也有三维四维五维

    int [][][] b = new int[][][]{
    { {1,2},{3.4} }.
    { {5,6},{7,8} }
    }
    

    Arrays工具类

    Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能。
    1.复制数组

    // copyOfRange(int[] original, int from, int to)
            // 第一个参数表示源数组
            // 第二个参数表示开始位置(取得到)
            // 第三个参数表示结束位置(取不到)
            int[] b = Arrays.copyOfRange(a, 0, 3);
    

    2.转换为字符串

    int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
    String content = Arrays.toString(a);
    

    3.排序
    刚才写了,注意,这个函数不是返回一个返回值,而是直接操作原数组

    Arrays.sort(a);
    

    4.搜索
    查询元素出现的位置
    需要注意的是,使用binarySearch进行查找之前,必须使用sort进行排序
    如果数组中有多个相同的元素,查找结果是不确定的

    System.out.println("数字 62出现的位置:"+Arrays.binarySearch(a, 62));
    

    5.判断是否相同

    System.out.println(Arrays.equals(a, b));
    

    注意,数组是有顺序的,书序不同结果也是 false
    6.填充
    使用同一个值,填充整个数组

    Arrays.fill(a, 5);//用5填充a
    

    更多方法和使用方式可以按ctrl进入util.Arrays类里观看

    进入工具类
    可以在这个类里查询方法和使用条件

    相关文章

      网友评论

          本文标题:重捡Java(三)数组

          本文链接:https://www.haomeiwen.com/subject/oqjqghtx.html