• Java数组常用API


    java.util.Arrays
    Arrays.asList()
    数组转换成列表
    String[] strArray = {"zhang", "xue", "zhi"};
    List<String> list = Arrays.asList(strArray);
    // 打印元素
    for (int i=0; i<list.size(); i++) {
        System.out.print(list.get(i) + " ");
    }
    1
    2
    3
    4
    5
    6
    Arrays.binarySearch()
    二分查找
    查找前,一定要排序。
    如果查找元素不存在,返回(-(insertion point) - 1)。
    自然数表示查到,负数表示没有查找。
    int[] a = {3,5,9,7,2};
    Arrays.sort(a); // 排序
    // 打印数组
    for (int item : a) 
        System.out.print(item + " ");
    System.out.println();
    // 二分查找
    int ind1 = Arrays.binarySearch(a, 2);
    int ind2 = Arrays.binarySearch(a, 4);
    int ind3 = Arrays.binarySearch(a, 1, 3, 5);
    System.out.println("2的查找位置:" + ind1);
    System.out.println("4的查找位置:" + ind2);
    System.out.println("5的查找位置:" + ind3);
    
    // 字符串
    String[] strArray = {"aa", "bc", "ab", "cd"};
    Arrays.sort(strArray);
    int ind4 = Arrays.binarySearch(strArray, "bc");
    System.out.println("'bc'的查找位置是:" + ind4);
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Arrays.copyOf()
    复制长度大于原数组长度时,后面补零。
    int[] a = {3,5,9,7,2};
    int[] newa = Arrays.copyOf(a, 2);
    int[] newa2 = Arrays.copyOf(a, 7);  //复制长度大于原数组的长度
    
    for (int item : newa) 
        System.out.print(item + " ");
    System.out.println();
    
    for (int item : newa2) 
        System.out.print(item + " ");
    System.out.println();
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Arrays.copyOfRange()
    复制长度大于原数组长度时,后面补零。
    Java中区间一般都是左闭右开[a,b),即包括左边,不包括右边。
    int[] a = {3,5,9,7,2};
    int[] newa = Arrays.copyOfRange(a, 1, 3);
    int[] newa2 = Arrays.copyOfRange(a, 1, 8);  //复制长度大于原数组的长度
    
    for (int item : newa) 
        System.out.print(item + " ");
    System.out.println();
    
    for (int item : newa2) 
        System.out.print(item + " ");
    System.out.println();
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Arrays.deepEquals()
    比较数组元素是否深层相等。
    一维数组无区别,高维数组有区别。
    String[][] ticTacToe1 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
    String[][] ticTacToe2 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
    System.out.println(Arrays.equals(ticTacToe1, ticTacToe2));// false
    System.out.println(Arrays.deepEquals(ticTacToe1, ticTacToe2));// true
    
    String[] ticTacToe3 = { " O ", " O ", " X " };
    String[] ticTacToe4 = { " O ", " O ", " X " };  
    System.out.println(Arrays.equals(ticTacToe3, ticTacToe4));  // true
    System.out.println(Arrays.deepEquals(ticTacToe3, ticTacToe4));  // true
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Arrays.deepHashCode()
    深层相等的两个数组的深层哈希编码也相等。
    String[][] ticTacToe1 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
    String[][] ticTacToe2 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
    System.out.println(Arrays.equals(ticTacToe1, ticTacToe2));// false
    System.out.println(Arrays.deepEquals(ticTacToe1, ticTacToe2));// true
    // ticTacToe1和ticTacToe1深层相等,深层哈希编码也相等。
    System.out.println(Arrays.deepHashCode(ticTacToe1));
    System.out.println(Arrays.deepHashCode(ticTacToe2));
    1
    2
    3
    4
    5
    6
    7
    Arrays.deepToString()
    // 二维数组有区别
    String[][] ticTacToe1 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
    System.out.println(Arrays.deepToString(ticTacToe1));    // 深层变换成字符串
    System.out.println(Arrays.toString(ticTacToe1));        // 一般
    
    // 一维数组无区别
    String[] ticTacToe3 = { " O ", " O ", " X " };
    System.out.println(Arrays.deepToString(ticTacToe3));    // 深层变换成字符串
    System.out.println(Arrays.toString(ticTacToe3));        // 一般
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Arrays.equals()
    参考Arrays.deepArrays()
    Arrays.fill()
    填充数组元素
    int[] a = {1,2,3,4,5,6};
    
    Arrays.fill(a, 8);//全部填充
    for (int item : a) 
        System.out.print(item + " ");
    System.out.println();
    
    Arrays.fill(a, 1, 3, 0);//指定范围,替换
    for (int item : a) 
        System.out.print(item + " ");
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Arrays.hashCode()
    如果两个数组相等,哈希编码也相等。
    int[] a = {1,2,3,4,5,6};
    int[] b = {1,2,3,4,5,6};
    String[] c = {"a", "b", "c"};
    String[] d = {"a", "b", "c"};
    
    System.out.println("a==b:" + Arrays.equals(a, b));
    System.out.println("a和b的哈希码分别为:" + Arrays.hashCode(a) + "	" + Arrays.hashCode(b));
    // 字符串
    System.out.println("c==d:" + Arrays.equals(c, d));
    System.out.println("c和d的哈希码分别为:" + Arrays.hashCode(c) + "	" + Arrays.hashCode(d));
    
    System.out.println("c==d:" + c.equals(d));
    System.out.println("c和d的哈希码分别为:" + c.hashCode() + "	" + d.hashCode());
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Arrays.sort()
    int[] a = {6,5,4,3,2,1};
    // 指定范围排序
    Arrays.sort(a, 1, 4);
    for (int item : a) 
        System.out.print(item + " ");
    System.out.println();
    // 全部元素排序
    Arrays.sort(a);
    for (int item : a) 
        System.out.print(item + " ");
    System.out.println();
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Arrays.toString()
    参考 Arrays.deepToString()
    遍历数组
    遍历一维数组
    int[] a = {6,5,4,3,2,1};
    // 遍历数组 for
    for (int i=0; i<a.length; i++)
        if (i == a.length-1)
            System.out.print(a[i]);
        else
            System.out.print(a[i] + ", ");
    System.out.println();
    
    // 遍历数组  - foreach
    for (int item : a)
        if (item == a[a.length-1])
            System.out.print(item);
        else 
            System.out.print(item + ", ");
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    遍历二维数组
    int[][] a = {{1,2,3}, {4,5,6}, {7,8,9}};
    // 遍历二维数组 for
    for (int i=0; i<a.length; i++) {
        for (int j=0; j<a[i].length; j++)
            if (j == a[i].length-1)
                System.out.print(a[i][j]);
            else
                System.out.print(a[i][j] + ", ");
        System.out.println();
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    数组对象的方法
    数组从java.lang.Object继承的方法:clone, equals, finalize, getClass, hashCode, notify, toString, wait
    arr.clone()
    通过克隆生成另一个数组
    int[] a = {1,2,3,4,5,6};
    int[] b = a.clone();
    Arrays.fill(a, 1, 4, 0); // 改变a,看是否对b有影响
    //打印b
    for (int item : b) 
        System.out.print(item + " ");
    1
    2
    3
    4
    5
    6
    arr.equals()
    arr.equals()和Arrays.equals()不同
    int[] a = {1,2,3,4,5,6};
    int[] b = a.clone();
    int[] c = a;
    // 判等
    System.out.println(Arrays.equals(a, b)); // 比较内容
    System.out.println(a.equals(b));    //比较地址
    System.out.println(a.equals(c));
    1
    2
    3
    4
    5
    6
    7
    arr.getClass()
    int[] a = {1,2,3,4,5,6};
    
    System.out.println(a.getClass());
    1
    2
    3
    arr.hashCode()
    int[] a = {1,2,3,4,5,6};
    
    // 两种方法的结果不同。
    System.out.println(a.hashCode()); 
    System.out.println(Arrays.hashCode(a)); // Arrays.hashCode()
    1
    2
    3
    4
    5
    arr.toString()
    int[] a = {1,2,3,4,5,6};
    
    System.out.println(a.toString());   // 地址
    System.out.println(Arrays.toString(a)); //字符串
    1
    2
    3
    4
    数组对象的属性
    arr.length
    int[] a = {1,2,3,4,5,6};
    
    int len = a.length;
    System.out.println(len);

    转自:https://blog.csdn.net/xuezhisdc/article/details/52346800

    参考:https://blog.csdn.net/qq_19558705/article/details/50436583

  • 相关阅读:
    根据之前发的那SQL语句查询表结构的语句做了个MSSQL实体类生成器!
    Struts1.1中的配置(转载)
    回首2011,展望My 2012
    Struts1中execute实现过滤控制
    接口通信的方式(上 )http方式
    创建表分区的总结
    mongodb系列一windowXP下的安装
    does not contain method named
    ORA12514 TNS: 监听程序当前无法识别连接描述符中请求的服务
    oracle9i卸载
  • 原文地址:https://www.cnblogs.com/rrttp/p/9047384.html
Copyright © 2020-2023  润新知