java集合类的学习(二)

  1. ArrayList,LinkedList,Vector都是List的实现类,前两都没有实现同步机制,Vector实现了同步机制。他们代码类似。
  2. ArrayList代表大小可变的数组,允许对元素进行快速随机访问,但向List中间进行添加移除元素操作时效率很差,LinkedList采用了链表数据结构,对顺序访问进行了优化,提高了向List中间位置进行操作的效率。
  3. Vector的作用跟ArrayList差不多,只是区别于一个实现了同步机制,一个没有。如果保存大量的数据用他。
  4. HashMap是Map的一个实现类,采用了哈希算法来存取Key对象,具有很好的存取性能。并且允许将null作为Map的Key或Value,HashMap也是没有实现同步机制的。
  5. hashMap和hashTable代码类似如下:
  6.  1 package 集合类练习;
     2 
     3 import java.util.Hashtable;
     4 import java.util.Iterator;
     5 
     6 public class HashTableDemo {
     7 
     8     /**
     9      * 时间:2014年4月22日17:17:56
    10      * 目的:HashTable的应用
    11      */
    12     public static void main(String[] args) {
    13         //创建一个hashtable的对象
    14         Hashtable ht = new Hashtable();
    15         
    16         Emp emp1 = new Emp("01", "陈奕迅", 20.3f);
    17         Emp emp2 = new Emp("02", "俞敏洪",1200f );
    18         
    19         ht.put("01", emp1);
    20         ht.put("02", emp2);
    21     //    ht.put(null, null);不能在hashtable中用null,在hashmap中可以。
    22         
    23         //查找,查找编号为02的员工
    24         if(ht.contains("02"))
    25         {
    26             System.out.println("可以找到该员工");
    27             
    28             Emp emp = (Emp)ht.get("02");
    29             System.out.println("名字是:"+emp.getName());
    30         }else {
    31             System.out.println("没有找到该员工");
    32         }
    33         
    34         //遍历HashMap中所有的Key和Value
    35         Iterator iterator = ht.keySet().iterator();//这一句话不能漏
    36         while(iterator.hasNext())
    37         {
    38             //取出key
    39             String keyString = iterator.next().toString();
    40             
    41             Emp emp = (Emp)ht.get(keyString);
    42             System.out.println("编号"+emp.getEmpNo());
    43             System.out.println("名字"+emp.getName());
    44             System.out.println("薪水"+emp.getSal());
    45         }
    46         
    47     }
    48 
    49 }

     

  7. Hashtable与hashMap的区别:1.hashtable是基于陈旧的Dictionary的,hashMap是java1.2引进的map接口的一个实现。2.hashTable是同步的,保证了hashtable中的对象是线程安全的,不过相对速度慢。3.hashMap可以让你将空值作为一个条目的key或value,但是Hashtable是不能放空值的。
  8. 集合类完,总结:1.如果要求线程安全可以使用Vector,hashtable。2.不要求同步使用Arraylist,LinkedList,hashMap.3.如果要求键值对,用HashMap和Hashtable。4.如果数据量很大,又要线程安全考虑vector。
posted @ 2014-04-22 17:55  美丽的阳光心  阅读(205)  评论(0编辑  收藏  举报