java数组和容器(Collection)

一,数组:(定义、分配空间、赋值)

一维数组的声明:type []  var 或者 type  var [];

java中试用new 创建数组对象格式为:数组名 = new 数组元素类型[数组元素个数];

注意理解基本数据类型数组和引用类型一维数组的内存分配差异。

数组的定义与初始化

 

1,数组动态初始化(数组的定义也就是数组的空间分配和数组元素的赋值分开进行):数组的定义与数组元素分配空间和赋值操作分开进行。

eg1: int a[];

      a = new int[3];

      a [0] = 1;    a [1] = 2;   a [2] = 3;

eg2  Date d [];

        d = new Date[2];

        d[0] = new Date(5,12,2008);      d[1] = new Date(3,22,2011);

 

2,数组静态初始化:定义数组的同时就为数组元素分配空间并赋值。

eg1:int a[] =  {1,2,3};   /    int[] a = {1,2,3};

eg2:  Date d[] = {new Date(8,8,2008),new Date(5,12,2008),new Date(3,22,2011),new Date(15,8,2011)};

 

数组元素默认的初始化: int 类型的默认值是0,  float 和double类型默认的是0.0;  String或者自定义对象是null。 eg:  int[] i = new int[5];  System.out.println(i[2]);

数组的下标:从0开始到n-1。

每个数组都有一个length属性指明其长度  eg: a.length的值为数组a的长度(元素个数)

 

二维数组:二维数组可以看成是数组的数组,也就是以数组为元素的数组。

eg:int a[][] = {{1,2},{3,4,5},{6,7,8,9}};

多维度数组的初始化应该按照从高维到低维的顺序进行(通俗的讲就是从左到右)。从内存分配方面来理解。

eg:int a[][] = new int[3][];

       a[0] = new int[2];

       a[1] = new int[3];

       a[2] = new int[3];

下面的做法是非法的:int a[][] = new int[][5];

数组拷贝  System.arraycopy(src, srcPos, dest, destPos, length);

 

二,集合

    1,Collection接口:层次结构中的根元素
        
    2,List接口:有序,可以重复
      2.1,ArrayList    数组的形式存储    连续的内存存储    查找 快   插入删除慢     删除中间的元素的时候会把删除元素的后面的元素往前移动。线程不安全,效率高 
      2.2,LinkedList   链表的形式存储    非连续的内存存储     查找 慢     插入/删除 快    链式存储  无法根据偏移量计算出下一个元素的位置  需要遍历才能找到.  线程不安全,效率高 

       2.3Vector 数组的形式存储    连续的内存存储。 线程安全,效率低下。 
    3,Set接口:无序,不可以重复
       
    4,Map接口:里面存放的是键值对的方法
       4.1:HashMap  线程不安全的,效率高

       4.2:HashTable  线程安全的,效率低


    5,

 

    6,

 

    7,

 

Java数组、ArrayList、LinkedList和Vector性能比较



 

 使用容器或者数组的 要考虑的几点:
    a,内存分配
    b,插入   查找   删除 的效率
    c,线程安全
    d, 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值