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(' ');
        }
    }
从该类看,**迭代器**是结合非常重要的接口,不管是插入删除或者包含,都使用了迭代器来寻找元素或者删除元素
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章