zoukankan      html  css  js  c++  java
  • Java(C#)基础差异-数组

    1、填充数组

    Java

    数组填充替换方法Arrays.fill()

    举例如下:

    import java.util.Arrays;
    public class FillDemo {
    
        public static void main(String[] args) {
            int arr[] = new int[5];
            // 使用同一个值对数组进行填充
            Arrays.fill(arr, 8);
            for (int i = 0; i < arr.length; i++) {
                System.out.println("第" + i + "个元素是:" + arr[i]);
            }
        }
    
    }

    运行结果如下:

     

    2、复制数组

    Java 

    数组复制使用方法Arrays.copyOf以及Arrays.copyOfRange

    (1)Arrays.copyOf

    语法如下:

    copyOf(arr,int newlength)

    说一下newlength:int型常量,指复制后的新数组的长度。如果新数组的长度大于数组arr的长度,则用0填充(根据复制数组的类型来决定填充的值,整型数组用0填充,char型数组则使用null来填充);如果复制后的数组长度小于数组arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。

    举例如下:

    import java.util.Arrays;
    public class CopyDemo {
        public static void main(String[] args) {
            int arr[] = new int[] { 23, 43, 12 };
            int newarr[] = Arrays.copyOf(arr, 5);
            for (int i = 0; i < newarr.length; i++) {
                System.out.println(newarr[i]);
            }
        }
    }

    运行结果如下:

    (2)Arrays.copyOfRange

    语法如下:

    copyOfRange(arr,int fromIndex,int toIndex)

    说一说后两个参数:

    fromIndex:指定开始复制数组的索引位置。fromIndex必须在0至整个数组的长度之间。新数组包括索引是formIndex的元素

    toIndex:要复制范围的最后索引位置。可大于数组arr的长度。新数组不包括索引是toIndex的元素

    举例如下:

    import java.util.Arrays;
    public class CopyOfRangeDemo {
        public static void main(String[] args) {
            int arr[] = new int[] { 23, 42, 12, 84, 10 };
            int newarr[] = Arrays.copyOfRange(arr, 0, 8);
            for (int i = 0; i < newarr.length; i++) {
                System.out.println(newarr[i]);
            }
        }
    }

    运行结果如下:

    3、数组查询

    Java

    binarySearch()

    此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。

    binarySearch()方法的返回值为:如果找到关键字,则返回值为关键字在数组中的位置索引,且索引从0开始;如果没有找到关键字,返回值为负的插入点值,所谓插入点值就是第一个比关键字

    大的元素在数组中的位置索引,而且这个位置索引从1开始

    binarySearch(object[ ], object key);

    binarySearch(object[ ], int fromIndex, int endIndex, object key);

    举例如下:

    public class SearchDemo {
        public static void main(String[] args) {
            int[] b = new int[] { 4, 25, 10, 95, 06, 21 };
            System.out.println("原数组为:");
            for (int dim1 : b) {
                System.out.print("" + dim1 + " ");
            }
            Arrays.sort(b);
            System.out.println("排序后为:");
            for (int x : b) {
                System.out.print(x + " ");
            }
            System.out.println();
            int index = Arrays.binarySearch(b, 2);
            System.out.println("关键字2的返回值为:" + index);
            index = Arrays.binarySearch(b, 20);
            System.out.println("关键字20的返回值为:" + index);
            index = Arrays.binarySearch(b, 30);
            System.out.println("关键字30的返回值为:" + index);
            index = Arrays.binarySearch(b, 100);
            System.out.println("关键字100的返回值为:" + index);
            index = Arrays.binarySearch(b, 10);
            System.out.println("关键字10的返回值为:" + index);
        }
    }

    运行结果如下:

    实例解析:

    可以看到 关键字2并没有在数组中,而且2比数组中的任何一个元素都小,所以其插入点的值应为元素4的位置也就是1(没有找到关键字从1开始

    关键字20也不在数组中,数组中第一个比20大的数是21,所以20的插入点值为4(没用找到关键字从索引从1开始

    关键字100也不在数组中,而且100比数组中所有的元素都大,此时插入点值为length+1 为7(没有找到关键字索引从1开始

    关键字10在数组中,所以返回其在数组中的索引为2(找到关键字索引从0开始

    之所以计算插入点值时索引要从1开始算,是因为-0=0,如果从0开始算,那么上面例子中关键字2和关键字4的返回值就一样了。

    Code

    JavaCode-->JavaVSNet/arraydemo

    C#Code--> 

  • 相关阅读:
    第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
    POJ1050 To the Max 最大子矩阵
    POJ1259 The Picnic 最大空凸包问题 DP
    POJ 3734 Blocks 矩阵递推
    POJ2686 Traveling by Stagecoach 状态压缩DP
    iOS上架ipa上传问题那些事
    深入浅出iOS事件机制
    iOS如何跳到系统设置里的各种设置界面
    坑爹的私有API
    业务层网络请求封装
  • 原文地址:https://www.cnblogs.com/SimplePerson/p/6417429.html
Copyright © 2011-2022 走看看