泛型---集合1

  

结构的分类:

  List结构的集合类:ArrayList,Vector,Stack,LinkedList类;

    Vector:

      向量类提供了三种构造方法: 
        public vector() 
        public vector(int initialcapacity,int capacityIncrement) 
        public vector(int initialcapacity)

        使用第一种方法系统会自动对向量进行管理,若使用后两种方法。则系统将根据参数,initialcapacity设定向量对象的容量(即向量对象可存储数据的大小),当真正存放的数据个数超过容量时。系统会扩充向量对象存储容量。

        参数capacityincrement给定了每次扩充的扩充值。当capacityincrement为0的时候,则每次扩充一倍,利用这个功能可以优化存储。在Vector类中提供了各种方法方便用户的使用:

        public final synchronized void removeElement(Object obj) 从向量中删除obj,若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员。 

  Map结构的集合类:HashMap,Hashtable(注意t不大写)类;

  set结构的集合类:HashSet,TreeSet类

  Queue结构的集合类:Queue接口

ArrayList,Vector(英语意思是向量),LinkedList,Stack他们的基本方法跟ArrayList差不多一样;

LinkedList比ArrayList多addFirst()与addLast()方法,remove,get方法也是一样;

 

ArrayList与Vector的区别:

 1,同步性:

    Vector是同步的,而arrayList是异步的;

2,数据增长:

    从内部实现机制来讲ArrayList与Vector都是使用数组Array来控制集合中的对象。当向这两种类型增加元素的时候,如果元素的数目超过了内部数组目前的的长度,他们都需要增加扩展内部数组的长度,Vector增加100%,而ArrayList是50%;

HashMap与Hashtable

注意:HashMap中的Key不能一样,会覆盖前边的那个一样的key的对象,同时HashMap保存的不是按照顺序保存的。而ArrayList可以让一个对象add两次,不会发生覆盖;

HashMap h=new HashMap();
        h.put("s001",new Employ("s001","lu",1000));
        h.put("s002",new Employ("s002","liu",2000));
        if(h.containsKey("s001")){
            //不用是用for循环进行遍历了
            System.out.println("z这个员工的信息是:");  
            //get方法得到的是Object,要进行强制转换
            Employ e=(Employ)h.get("s001");
            System.out.println(e.getName());
        }
       
        //不能是用for进行遍历,get方法为get(key),无法遍历
        /*for(int i=0;i<h.size();i++)
            h.get(key);
        */
        //遍历HashMap中的key与value
        Iterator i=h.keySet().iterator();
        //hasNext()返回一个boolean值
        while(i.hasNext()){
          // 取出key,这里的next()方法得到的是一个Object
           String str=i.next().toString();
            //通过key取出value
           Employ e=(Employ)h.get(str);
           System.out.println(e.getName());
           System.out.println(e.getNumber());
           System.out.println(e.getSal());
        }
       
    }
   
   
}


 

HashMap与Hashtable的区别:

1,Hashtable是同步的,这个类的一些方法保证了Hashtable中的对象是线程安全的。而hashMap(不需要线程安全的时候选它,这样可以避免由于带的不必要的性开销,从而提       高效率)是异步的,因此hashMap的对象并不是线程安全的。

2,Hashtable的key与value不能放null,而HashMap行。

 

 


 

集合总结:

  1.如果要求是线程安全的:Vector,Hashtable;

  2,如果不要求线程安全:ArrayList,HashMap,LinkedList;

  3.如果要求是用键值时使用HashMap和Hashtable;

  4.如果数据量很大,又要线程安全,使用Vector;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值