zoukankan      html  css  js  c++  java
  • java的数组和arraylist

    1.数组

     1.0   一开始就错了 int a[8];    //没有像C在内存中开辟了8个区域

    改: 

       int a[] = {1,2,3} ;	
       System.out.println(a.length); //3
    

      

    1.1用java专用的new运算符

    int[]  array = new int[8];
    //引用array[2] 就是0

      

     

    数组特点: 大小固定  ,  按下标进行取值


    2.arraylist

    工作原理就是:1.  new一个的时候得到10个元素的数组

    add超过10个元素的时候,也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15

    2. new一个新数组(15元素),然后把老的数组元素copy过来

    增 删 都会移动元素的大量移动

    对比《数据结构》的顺序表

    顺序表定义:用一组地址连续的存储单元依次存储线性表的数据元素的表

    相当于能够动态增加删除数组里面的元素。

    构造器
     ArrayList提供了三个构造器:
    public   ArrayList();
    默认的构造器,将会以默认(16)的大小来初始化内部的数组

    在做实验实现顺序表的时候,int a[100] ,然后用一个变量L来标识这个表的长度

     List list = new ArrayList();
     list.add(1);
    

      

    首先,ArrayList有一个初始的默认大小,为10.
    private static final int DEFAULT_CAPACITY = 10;
    
    从add方法为入口
    public boolean add(E e) {
            ensureCapacityInternal(size + 1);  //  确保不超出内部的容量
            elementData[size++] = e;      // 标准的数组啊
            return true;
        }
    

      

    ArrayList的扩容会产生一个新的数组,将原来数组的值复制到新的数组中。会消耗一定的资源

     

  • 相关阅读:
    Spring--之旅
    体验 Windows 系统 CVM
    基于 CentOS 搭建 WordPress 个人博客
    Codeforces Round #316 (Div. 2)
    BZOJ 1048 [HAOI2007]分割矩阵
    BZOJ 1047 [HAOI2007]理想的正方形
    BZOJ 1045 [HAOI2008] 糖果传递
    BZOJ 1042 [HAOI2008]硬币购物
    BZOJ 1030 [JSOI2007]文本生成器
    BZOJ 第二波刷题开始喽
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/8401176.html
Copyright © 2011-2022 走看看