java集合---Collection

Collection类

1
public interface Collection<E> extends Iterable<E>

如上,我们知道Collection是一个泛型类,并且实现了Iterable接口。

Iterable接口

实现Iterable的类可以通过for each循环进行遍历

Iterable中有三个方法,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

/**
* 返回一个迭代器
*/
Iterator<T> iterator();

/**
*Java 8的新特性,之后介绍
*/
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}

/**
* Java 8的新特性,之后介绍
*/
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}

Iterator迭代器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public interface Iterator<E> {
/**
*判断集合中是否还存在元素
*/
boolean hasNext();

/**
*返回下一个元素
*/
E next();

/**
*将迭代器新返回的元素删除
*/
default void remove() {
throw new UnsupportedOperationException("remove");
}

/**
*Java 8新特性,之后介绍
*/
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}

Java集合框架中的类都在内部实现了Iterator接口,例如,在ArrayList中:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{

public Iterator<E> iterator() {
return new Itr();
}


private class Itr implements Iterator<E> {
...
}
}

Collection

Collection是一个容器接口,其中定义操作容器的方法,如下:

1
2
3
4
5
6
7
8
9
10
11
boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象
int size()返回当前集合中元素的数量
boolean contains(Object o)查找集合中是否有指定的对象
boolean isEmpty()判断集合是否为空
Iterator iterator()返回一个迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中的元素
boolean addAll(Collection c)将集合c中所有的元素添加给该集合
void clear()删除集合中所有元素
void removeAll(Collection c)从集合中删除c集合中也有的元素
void retainAll(Collection c)从集合中删除集合c中不包含的元素

AbstractCollection

AbstractCollection继承Collection,是一个抽象类,它实现了Collection中的部分方法,如:

1
2
3
4
5
6
7
8
9
10
11
public boolean isEmpty()
public boolean contains(Object o)
public Object[] toArray()
public <T> T[] toArray(T[] a)
public boolean add(E e)
public boolean remove(Object o)
public boolean containsAll(Collection<?> c)
public boolean addAll(Collection<? extends E> c)
public boolean removeAll(Collection<?> c)
public boolean retainAll(Collection<?> c)
public String toString()

Colections

Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。