Chinaunix首页 | 论坛 | 博客
  • 博客访问: 524238
  • 博文数量: 151
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1405
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 14:32
文章分类

全部博文(151)

文章存档

2011年(1)

2010年(23)

2009年(1)

2008年(126)

我的朋友

分类: Java

2008-05-15 17:07:05

    集合类用于存储一组对象(Object),而不能用于存放基本数据类型,其中的每个对象称之为元素,经常会用到的有Vector、Enumeration、ArrayList、Collection、Iterator、Set、List等集合类和接口。
 
一、Vector类和Enumeration接口。
   1、由于Java不支持动态数组,Vector类提供了一种与动态数组相近的功能。如果要将若干对象保存在数据结构中,而事先对象的数目不确定,这时Vector就是一种不错的选择。Vector类的elements()方法将返回实现Enumeration接口的类,然后用Enumeration的nextElement可以逐个取出Vector中的数据
   Vector v = new Vector();
   v.addElement();//增加元素
   Enumeration e = v.elements();//取V中的元素
   //假设Vector中存放的是Integer类
   e.hasMoreElement();//是否还有元素
   Integer intObj = (Integer)e.nextElement();
   sum+ = intObj.intValue();
  
二、Collection接口和Iterator接口
   Collection接口和Iterator接口的关系类似与Vector类和Enumeration接口的关系,功能也差不多。但Collection是一个接口,我们需要用实现了该接口的类来创建对象。ArrayList就是实现了Collection接口的类。用ArrayList,上面的代码可以改为
   ArrayList v = new ArrayList();
   v.add();//增加元素
   Iterator e = v.iterator();//取V中的元素
   //假设Vector中存放的是Integer类
   e.hasNext();//是否还有元素
   Integer intObj = (Integer)e.next();
   sum+ = intObj.intValue();
  
三、Vector和ArrayList的区别
   1、从上面可以看出,ArrayList的方法名称更简练。
   2、Vector的所有方法都加了synchronized,而ArrayList没有加。也就是说Vector类的所有方法都是线程同步的。也正因为这样,Vector的性能比ArrayList会差50%左右。所以在无需同步机制的情况下,尽量使用ArrayList。
   3、ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍
   4、Vector提供indexOf(obj, start)接口,ArrayList没有
 
四、Collection、List、Set的区别
   1、Collection是List接口和Set接口的父类,它是一种通用性的接口。Collection各个元素对象之间没有指定的顺序,允许有重复元素和多个null元素对象。
   2、List各个元素对象之间有指定的顺序,允许有重复元素和多个null元素对象。
   3、Set各个元素对象之间没有指定的顺序,但不允许有重复元素,最多允许有一个null元素对象。
 
五、Collections类
   Collections包含各种有关集合操作的静态方法。(注意和Collection接口的区别)。比如对一个数组的排序:
   ArrayList a = new ArrayList();
   a.add(new Integer(1));
   a.add(new Integer(3));
   a.add(new Integer(2));
 
   Collections.sort(a);
   这样就可以对a进行排序。
  
阅读(825) | 评论(0) | 转发(0) |
0

上一篇:String 和 StringBuffer

下一篇:Hashtable类

给主人留下些什么吧!~~