9.1 Java集合的继承体系
Collection集合体系的继承树 Map集合体系的继承树9.2 Collection和Iterator接口
Collection接口是Set、List、Queue接口的父接口,该接口里定义的方法既可以用于操作Set集合,也可以用于操作List和Queue集合。
Collection接口里定义了如下方法用于操作集合:
- boolean add(Object o):此方法向集合里添加一个元素。操作修改了集合则返回true。
- boolean addAll(Collection c):将集合里的所有元素添加到指定集合里。操作修改了集合则返回true。
- void clear():清除集合里的所有元素,集合长度变为0。
- boolean contains(Object o):判断集合里是否包含指定元素。
- boolean containsAll(Collection c):判断集合里是否包含c集合里的所有元素。
- boolean isEmpty():集合长度为0则返回true,否则返回false。
- Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
- boolean remove(Object o):删除指定元素,包含多个相同元素时只删除第一个符合条件的元素,删除成功后返回true。
- boolean removeAll(Collection c):从指定集合里删除c集合里所有的元素,删除一个或一个以上的元素则返回true。
- boolean retainAll(Collection c):求指定集合与c集合的交集。操作修改了集合则返回true。
- int size():返回集合里元素的个数。
- Object[] toArray():把集合转换为一个数组。
Iterator接口里定义了如下方法用于遍历集合:
- boolean hasNext():被遍历的集合若未迭代结束,则返回true。
- Object next():返回集合里的下一个元素。
- void remove():删除集合里上一次next方法返回的元素。
- void forRemaining(Consumer action):Java8为Iterator新增的默认方法,使用Lambda表达式来遍历集合元素。
遍历集合的方式:
- 使用Java8为Iterable接口新增的forEach(Consumer action)方法,此处可使用Lambda表达式。Iterable接口为Collection接口的父接口。
- 使用Iterator遍历集合元素。通过next()方法获得的临时变量是拷贝的值,遍历过程中只能通过Iterator接口的remove()方法来删除元素,若调用Collection的remove(c)方法,会抛出ConcurrentModificationException异常。
- 使用Java8为Iterator增强的forEachRemaining方法遍历集合。可以使用Lambda表达式。
- 使用forEach循环遍历集合。临时变量获得的是拷贝的值,迭代过程中不能删除元素。
操作集合的方式:
- 使用Predicate和Java8为Collection新增的removeIf(Predicate filter)方法操作集合。
- 使用Java8新增的Stream操作集合,集合通过.stream()方法变为流。
网友评论