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--> 

  • 相关阅读:
    什么是字典序算法?
    安装使用zookeeper
    用最快速度将0*10范围内的数进行排序
    自定义schema 流程
    dubbo原理
    jvm 线上命令
    如何实现抢红包算法?
    GC Root 对象有哪些
    Jquery动态绑定事件处理函数 bind / on / delegate
    找出数组中的最小值(es5/es6)
  • 原文地址:https://www.cnblogs.com/SimplePerson/p/6417429.html
Copyright © 2011-2022 走看看