美文网首页
第十六章:数组

第十六章:数组

作者: MAXPUP | 来源:发表于2017-12-07 19:06 被阅读0次

    数组的特殊性

    数组与其他种类的容器的区别:效率、类型和保存基本类型的能力。其他容器在处理对象时,都是当做Object处理,而数组可以去持有某种具体类型,通过编译期检查可以防止错误类型使用。

    数组是第一级对象

    length是数组大小,而不是实际保存的元素个数。创建数组对象时,所有引用被自动初始化为null,数值为0,字符型为(char)O,布尔为false。
    多维数组

    数组与泛型

    不能实例化具有参数化类型的数组:

    Peel<Banana>[] peels = new Peel<Banana>[10];
    

    但可以参数化数组本书的类型:

    public T[] f(T[] arg){return arg;}
    

    java允许创建泛型数组的引用, 然后创建非泛型的数组,将其转型:

    List<String>[] ls;
    List[] la = new List[10];
    ls = (List<String>) la; // unchecked warning
    ls[0] = new ArrayList<String>();
    //Compile-time checking produces an error:
    // ! ls[1] = new ArrayList<Integer>();
    
    //如果你要直接生成一个泛型数组,抛出一个Unchecked warning
    List<BerylliumSphere>[] spheres = (List<BerylliumSphere>[]) new List[10];
    

    填充数组

    1. Arrays.fill(array, value):使用同一个值填充各个位置。
    2. 数据生成器Generator(next)

    复制数组

    System.arraycopy(源数组,开始复制位置,目标数组,目标复制开始位置,复制个数),比for循环快递。

    比较数组

    Arrays类提供了重载后的equals()方法,用来比较整个数组(元素个数相等,对应位置的元素也相等)。
    java有两种方式提供比较功能,一是java.lang.Comparable接口(compareTo(obj)),当前对象小于返回负值,等于返回0,大于返回正值。
    二是Comparator接口( equals()和compare(obj1, obj2)方法 )

    数组排序

    Arrays.sort( array, Comparable | Comparator)(基本数据类型数组无法使用Comparator进行排序)
    在已排序的数组中查找使用Arrays.binarySearch(array, 比较器)执行快速查找,返回index。
    找到目标,返回值大于等于0,否则,产生负返回值,表示若要保持数组的排序状态此目标元素所应该插入的位置,负值的计算方式:-(插入点)-1,插入点指第一个大于查找元素在数组中的位置。

    相关文章

      网友评论

          本文标题:第十六章:数组

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