集合
集合接口和迭代器接口
1.迭代器
iterator方法用于返回一个实现了Iterator接口的对象。
- Iterator包含3个方法:
public interface Iterator<E>
{
E next();
boolean hasNext();
void remove();
}
- 通过反复调用next方法,可以逐个访问集合中的每个元素。但是到了集合的末尾,next方法将抛出一个NoSuchElementException。因此需要在调用next之前调用hasNext方法。例如:
while(iter.hasNext())
{
String element = iter.next();
do something with element
}
或者用“for each”循环
for (String element : c)
{
do something with elemrnt
}
2.删除元素
Iterator接口的remove方法将会删除上次调用next方法时返回的元素。p564
具体的集合
集合类型 | 描述 |
ArrayList | 一种可以动态增长和缩减的索引序列 |
LinkedList | 一种可以在任何位置进行高效地插入和删除操作的有效序列 |
ArrayDeque | 一种可以用循环数组实现的双端序列 |
HashSet | 一种没有重复元素的无序集合 |
TreeSet | 一种有序集 |
HashMap | 一种存储键/值关联的数据结构 |
TreeMap | 一种键值有序排列的映射表 |
EnumMap | 一种键值属于枚举类型的映射表 |
散列集
- 散列码是由对象的实例域产生的一个整数
- java里,散列表用链表数组实现。每个列表称为桶bucket。
- 其中set类型是没有重复元素的的元素集合
- contains方法用来快速地查看是否某个元素已经出现在集中。只在某个桶中查找元素,而不必查看集合中的所有元素。
树集TreeSet
- 树集是一个有序集合,可以按照任意顺序将元素插入到集合中,在遍历时,每个值将自动地按照排序后的顺序呈现。
- 排序是用树结构完成的(p579例子中使用的是red-balck tree红黑树)
对象的比较
默认情况下树集假定插入的元素实现了Compareable接口,如果a与b相等,调用a.compareTo(b)一定返回0,若排序后a位于b之前,则返回负值,若果a在b之后,则返回正值
Maps映射表
- 映射表用来存放键/值对
- 散列映射只对键进行散列,树映射表用键的整体顺序对元素进行排序,并将其组织成搜索树。
- 如果在映射表中没有与给定键对应的信息,get将返回null。
- remove方法用于从映射表中删除给定键对应的元素。size方法用于返回映射表中的元素数。
- 键必须是唯一的。不能对同一个键存放两个值。