纳金网

标题: 集合接口 [打印本页]

作者: Mr.cai    时间: 2011-7-26 22:54
标题: 集合接口
集合接口



  1.Collection 接口



  用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。







  (1) 单元素添加、删除操作:



   boolean add(Object o):将对象添加给集合



   boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o



  (2) 查询操作:



   int size() :返回当前集合中元素的数量



   boolean isEmpty() :判断集合中是否有任何元素



   boolean contains(Object o) :查找集合中是否含有对象o



   Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素



  (3) 组操作 :作用于元素组或整个集合



   boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素



   boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合



   void clear(): 删除集合中所有元素



   void removeAll(Collection c) : 从集合中删除集合c 中的所有元素



   void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素



  (4) Collection转换为Object数组 :



   Object[] toArray() :返回一个内含集合所有元素的array



   Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array和参数a的型别相同,需要转换为正确型别。



  此外,您还可以把集合转换成其它任何其它的对象数组。但是,您不能直接把集合转换成基本数据类型的数组,因为集合必须持有对象。



  “斜体接口方法是可选的。因为一个接口实现必须实现所有接口方法,调用程序就需要一种途径来知道一个可选的方法是不是不受支持。如果调用一种可选方法时,一个 UnsupportedOperationException 被抛出,则操作失败,因为方法不受支持。此异常类继承 RuntimeException 类,避免了将所有集合操作放入 try-catch 块。”



  Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。



  1.1.AbstractCollection 抽象类



  AbstractCollection 类提供具体“集合框架”类的基本功能。虽然您可以自行实现 Collection 接口的所有方法,但是,除了iterator()和size()方法在恰当的子类中实现以外,其它所有方法都由 AbstractCollection 类来提供实现。如果子类不覆盖某些方法,可选的如add()之类的方法将抛出异常。



  1.2.Iterator 接口



  Collection 接口的iterator()方法返回一个 Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection 中除去适当的元素。







  (1) boolean hasNext(): 判断是否存在另一个可访问的元素



    Object next(): 返回要访问的下一个元素。如果到达集合结尾,则抛出NoSuchElementException异常。



  (2) void remove(): 删除上次访问返回的对象。本方法必须紧跟在一个元素的访问后执行。如果上次访问后集合已被修改,方法将抛出IllegalStateException。



  “Iterator中删除操作对底层Collection也有影响。”



  迭代器是 故障快速修复(fail-fast)的。这意味着,当另一个线程修改底层集合的时候,如果您正在用 Iterator 遍历集合,那么,Iterator就会抛出 ConcurrentModificationException (另一种 RuntimeException异常)异常并立刻失败。

作者: C.R.CAN    时间: 2012-1-24 23:18
八方捷报,四海增辉。 一元复始,九州同庆; 八方和协,四季平安。 万里江山,增奇添彩; 四化图景,流翠飞红。

作者: 奇    时间: 2012-3-12 23:22
百度的叫度娘,网易的叫易娘,新浪内部还在为是叫新娘还是浪娘而争论不休!……不管你们是企鹅的额娘,豆瓣的伴娘,还是华为的伪娘,都要记得,淘宝才是你们的亲娘啊!亲!!

作者: 菜刀吻电线    时间: 2012-8-4 00:19
很经典,很实用,学习了!

作者: 奇    时间: 2012-9-1 01:09
无聊时可以刷屏幕 灌水 也可以试试 帖子的标题究竟可以写多长

作者: 菜刀吻电线    时间: 2012-9-3 01:03
真不错,全存下来了.





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5