public abstarct class AbstractCollection implements Collection;
這是一個抽象類,實現了Collection接口
- 抽象方法
public abstract Iterator<E> iterator() ;返回結合的迭代器
public abstract int size() ;返回集合大小(元素個數)
- 具體方法
public boolean isEmpty(){ //判空的方法就是判斷size()是否爲0
return size()==0;
}
public boolean contains(Object o) { //判斷是否包含某個元素
Iterator<E> it = iterator();
if (o==null) {
while (it.hasNext())
if (it.next()==null)
return true;
} else {
while (it.hasNext())
if (o.equals(it.next()))
return true;
}
return false;
}
public Object[] toArray() { //通過遍歷將每個元素填入到一個數組並且返回該數組
// Estimate size of array; be prepared to see more or fewer elements
Object[] r = new Object[size()];
Iterator<E> it = iterator();
for (int i = 0; i < r.length; i++) {
if (! it.hasNext()) // fewer elements than expected
return Arrays.copyOf(r, i);
r[i] = it.next();
}
return it.hasNext() ? finishToArray(r, it) : r;
}
public boolean add(E e)
public boolean remove(Object o) ;使用迭代器遍歷刪除(刪除碰到的第一個o),有刪除操作返回true否則返回false
public containsAll(Collection<?> c);實質是遍歷c中的每個元素,然後調用coatins( Object e)來一一判斷
public boolean addAll(Collection<? extends E> c);將c中的元素逐個加入集合,調用add( E e)如果有加入則返回true否則返回false
public boolean removeAll(Collection<?> c) { //刪除與結合c共同有的元素
boolean modified = false;
Iterator<?> it = iterator();
while (it.hasNext()) {
if (c.contains(it.next())) {
it.remove(); //迭代器的remove方法刪除的是當前迭代到的那個元素
modified = true; //如果有修改就返回true
}
}
return modified;
}
public boolean retainAll(Collection<?> c) { //與removeAll剛好相反
boolean modified = false;
Iterator<E> it = iterator();
while (it.hasNext()) {
if (!c.contains(it.next())) {
it.remove();
modified = true;
}
}
return modified;
}
public void clear() {
Iterator<E> it = iterator(); //用迭代器刪除
while (it.hasNext()) {
it.next();
it.remove();
}
}
public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
從該類看,**迭代器**是結合非常重要的接口,不管是插入刪除或者包含,都使用了迭代器來尋找元素或者刪除元素