接着上次的继续,在集合框架的大家族中我们说完了集合的祖宗Iterator
,接下来我们看看他的“孩子”—Collection
。
public interface Collection<E> extends Iterable<E>
可以看出来Collection
也是一个接口,他继承的Iterator接口在Iterator
的基础上又扩展的一些功能:
1. int size();
2. boolean isEmpty();
3. boolean contains(Object o);
4. Iterator<E> iterator();
5. Object[] toArray();
6. <T> T[] toArray(T[] a);
7. boolean add(E e);
8. boolean remove(Object o);
9. boolean containsAll(Collection<?> c);
10.boolean addAll(Collection<? extends E> c);
11.boolean removeAll(Collection<?> c);
12.default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
13.boolean retainAll(Collection<?> c);
14.void clear();
15. boolean equals(Object o);
16.int hashCode();
17. default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
18.default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
19. default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
我们发现在Iterator
的基础上Collection
新增了很多的方法扩展使得更加强大,下面就对Collection
中的方法一一说说:
1.size
:返回此集合中的元素数.如果此集合包含多个元素,则就返回元素的总数。
2.isEmpty
:判断集合是否为空,如果集合中没有元素,返回true
。
3.contains
:用于判断集合中是否包含了指定的元素,如果包含则返回true
。
4.iterator
:返回一个用于访问集合中每一个元素的迭代器。
5.toArray
:将集合转换为数组,即返回这个集合的对象(集合中只能存放引用类型的数据)数组。
6.<T> T[] toArray(T[] a)
:返回这个集合的对象数组。如果a足够大,加将集合中的元素填入这个数组中。剩余空间填补null
;否则,分配一个新的数组,其成员类型与a的成员类型相同,其长度等于集合的大小,并填充集合元素。
7.add
:将一个元素添加到集合中,如果由于这个调用改变了集合,返回true
。
8.remove
:从集合中删除指定的对象,如果有匹配的对象被删除,返回true
。
9.containsAll(Collection<?> c)
:判断集合中是否包含指定集合中的所有元素,包含返回true
。
10.addAll(Collection<? extends E> c)
:将指定集合的所有元素添加到这个集合中,添加成功返回true
。
11.removeAll(Collection<?> c):从这个集合中删除c集合中存在的所有元素,删除成功返回true
。
12.retainAll(Collection<?> c)
:从这个集合中删除所有与c集合中元素不同的元素,删除成功返回true
。
13.clear
:清空集合中的所有元素。
1.removeIf(Predicate<? super E> filter)
:在JDK1.8中,Collection以及其子类新加入了removeIf方法,作用是按照一定规则过滤集合中的元素。结合Java8的新特性Lambda表达式的内置的四大核心函数式接口进行使用(Predicate:断言型接口)。
2.Spliterator<E> spliterator()
:Spliterator为JDK1.8最新添加的分割迭代器,位于java.util.Spliterator。
Stream<E> stream()
Stream<E> parallelStream
通过上面两个方法都可以得到该集合的流(Stream
),这时Java8的新特性,我们可以通过这个Stream
对象对集合进行操作从而得到最终的结果。
List<Integer> list = new ArrayList();
list.add(5);
list.add(7);
list.add(0);
list.add(4);
//得到流对象
Stream stream = list.stream();
//进行排序
Stream stream1 = stream.sorted();
//输出最终结果
stream1.forEach(System.out::println);//0 4 5 7
关于java8的新特性可以看这个视频进行学习Java8