Java 集合

Java 集合知识汇总

      Java的集合内容很丰富,可以称为Java集合框架,所谓框架者,必然存在着层次关系,在面向对象的世界里,层次意味着接口,抽象类及实现了接口或者继承自抽象类的类。接口的出现很好理解,因为不同类型的集合都有一些通用的方法。一图胜千言:Java集合的关系图如下:

     

注意:很多人想当然地认为Collection接口是所有集合的顶级接口,后来通过读Java API 6 发现,Map和Collection没有血缘关系,真是大跌眼镜!

我们来看看API中对Collection和Map的接口及其子类的描述:

通过这两个图我们可以发现,Map和Collection确实是不同的。集合中有的类可以允许重复元素,有的不可以,下面有一个列表进行了总结。

List是有序集合,而Set和Map则不一定。以Tree开头的都是有序的。而以Hash开头的,是用hash实现的,性能上比用二叉树实现的Tree**要好。
关于同步问题,一般而言,非同步的类,性能比同步的要好。我们建议用Collections.synchronizedCollection(Collection<T> c)方法去处理原本非同步的类,在不丢失性能的前提下,实现同步。Java1.5提供了ConcurrentHashMap,适用于高并发的线程安全实现。

下面是几个例子:

  1. <pre class="java" name="code">Set set = new HashSet();  
  2. set.add("111");  
  3. set.add("222");  
  4. set.add("333");  
  5. set.add("333"); // can not be added  
  6. System.out.println("size = "+set.size());  
  7. for(Iterator it = set.iterator();it.hasNext();){  
  8.     System.out.println(it.next());  
  9. }  
  10.           
  11. List list = new ArrayList();  
  12. list.add("bbb");  
  13. list.add("ccc");  
  14. list.add("ddd");  
  15. list.add("ddd");  
  16. System.out.println("size = "+list.size());  
  17. for(Iterator it = list.iterator();it.hasNext();){  
  18.     System.out.println(it.next());  
  19. }  
  20.           
  21. Vector v = new Vector();  
  22. v.add("v1");  
  23. v.add("v2");  
  24. v.add("v3");  
  25. v.add("v3");  
  26. for(Iterator it = v.iterator();it.hasNext();){  
  27.     System.out.println(it.next());  
  28. }  
  29.           
  30. List arrayList = new ArrayList();  
  31. arrayList.add("Index");  
  32. arrayList.add("Index");  
  33. arrayList.add("Index");  
  34. for(Iterator it = arrayList.iterator();it.hasNext();){  
  35.     System.out.println(it.next());  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值