Java集合框架复习之Collection接口,iterator接口,iterable接口(二)


1.Collection<E>接口中处理集合元素的方法

boolean add(E e)

boolean addAll(Collection<? extends E>) 

void clear()

boolean contains(Object o) 如果该集合包含元素o返回true

boolean containsAll(Collection<?> c)  如果该集合包含c集合的所有元素则返回true

boolean equals(Object o) 
    比较此 collection 与指定对象是否相等。 
int hashCode() 
          返回此 collection 的哈希码值。 
boolean isEmpty() 
          如果此 collection 不包含元素,则返回 true。 
Iterator<E> iterator() 
          返回在此 collection 的元素上进行迭代的迭代器。 
boolean remove(Object o) 
          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。  

boolean removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。 

boolean retainAll(Collection<?> c) 
          仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。 
int size() 
          返回此 collection 中的元素数。 
Object[] toArray() 
          返回包含此 collection 中所有元素的数组。 
<T> T[]  toArray(T[] a) 
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。 

此接口中包含的“破坏性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持该操作,则指定这些方法抛出 UnsupportedOperationException(这个异常属于RuntimeException)。如果是这样,那么在调用对该 collection 无效时,这些方法可能,但并不一定抛出 UnsupportedOperationException。例如,如果要添加的 collection 为空且不可修改,则对该 collection 调用addAll(collection)方法时,可能但并不一定抛出异常。 

按照开发文档上说的,当一个方法在子类中没有意义时,我们可以

public void methodName(){
throw new UnsupportedOperationException("method not supported")

}


2.关于迭代器接口Iterator<E> 

对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:

  • 迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
  • 方法名称得到了改进。
Enumeration有两个方法:hasMoreElements 和 nextElement 判断是否还有更多的元素和返回下一个元素
Iterator 有三个方法,hasNext,next,remove,前两个和Enumeration对应


它们的好处都是为集合的遍历工作提供统一的接口,即便你更换了集合类的具体实现,你也不需要更换迭代的代码。
 booleanhasNext()
          如果仍有元素可以迭代,则返回 true。(换句话说,如果 next 返回了元素而不是抛出异常,则返回 true)。 
 Enext()
          返回迭代的下一个元素。  当没有元素迭代时,抛出异常NoSuchElementException 
 voidremove()
          从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,则迭代器的行为是不确定的。 
UnsupportedOperationException - 如果迭代器不支持 remove 操作。
IllegalStateException - 如果尚未调用 next 方法,或者在上一次调用 next 方法之后已经调用了 remove 方法

3.Iterable接口

开发文档给的定义

public interface Iterable<T>
实现这个接口允许对象成为 "foreach" 语句的目标。 


它只有一个方法,返回一个迭代器

Iterator<T>iterator()
          返回一个在一组 T 类型的元素上进行迭代的迭代器。

关于for-each循环与迭代器的对比,看http://blog.csdn.net/wanghuan203/article/details/7279742

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值