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(' ');
}
}
从该类看,**迭代器**是结合非常重要的接口,不管是插入删除或者包含,都使用了迭代器来寻找元素或者删除元素