java.util.AbstractCollection

public abstarct class AbstractCollection implements Collection;
這是一個抽象類,實現了Collection接口

  1. 抽象方法
public abstract Iterator<E> iterator() ;返回結合的迭代器
public abstract int size() ;返回集合大小(元素個數)
  1. 具體方法
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(' ');
        }
    }
從該類看,**迭代器**是結合非常重要的接口,不管是插入刪除或者包含,都使用了迭代器來尋找元素或者刪除元素
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章