我们都站在巨人的肩膀上
参考:http://www.cnblogs.com/forestwolf/p/5645179.html
1.容器概述
容器,就是可以容纳其他Java对象的对象。Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。
优点:
- 降低编程难度
- 提高程序性能
- 提高API间的互操作性
- 降低学习难度
- 降低设计和实现相关API的难度
- 增加程序的重用性
1.1接口与实现
接口:
Map接口没有继承自Collection接口,因为Map表示的是关联式容器而不是集合。但Java为我们提供了从Map转换到Collection的方法,可以方便的将Map切换到集合视图。
上图中提供了Queue接口,却没有Stack,这是因为Stack的功能已被JDK 1.6引入的Deque取代。
实现:
1.2迭代器(Iterator)
迭代器:
迭代器(Iterator)为我们提供了遍历容器中元素的方法。Collection也继承了Iterator,所以容器的核心就是迭代器的实现。
Collection接口源码:
public interface Collection<E> extends Iterable<E>{
int size();
boolean isEmpty();
//此列表是否包含指定的元素
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
//此列表是否包含指定的集合
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
//取两个集合的交集
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
}
Iterable 接口源码:
public interface Iterable<T> {
Iterator<T> iterator();
}
Iterator 接口源码:
public interface Iterator<E>{
boolean hasNext();
E next();
void remove();
}