集合概述
为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组)。Java提供集合类,集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有集合类都位于java.util包下。
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
Collection集合
Map集合
Collection接口
Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。
Collection提供了大量添加、删除、访问的方法来访问集合元素。
Iterator接口
Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
Iterator接口里定义了如下4个方法:
boolean hasNext():如果被迭代的集合还元素没有被遍历,则返回true。
Object next():返回集合里下一个元素。
void remove() :删除集合里上一次next方法返回的元素
void forEachRemaining(Consumer action),这是Java 8为Iterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。
Foreach循环遍历集合元素
使用JDK1.5提供的foreach循环来迭代访问集合元素更加便捷。
当使用foreach循环迭代访问集合元素时,该集合也不能被改变,否则将引发ConcurrentModificationException异常。
使用predicate操作集合
Java 8为Collection集合新增了一些需要Predicate参数的方法,这些方法可以对集合元素进行过滤。程序可使用Lambda表达式构建Predicate对象。
Java 8新增的Stream操作
Java 8还新增了Stream、IntStream、LongStream、DoubleStream等流式API。
独立使用Stream的步骤如下:
(1)使用Stream或XxxStream的builder()类方法创建该Stream对应Builder。
(2)重复调用Builder的add()方法向该流中添加多个元素。
(3)调用Builder的build()方法获取对应的Stream。
(4)调用Stream的聚集方法。
Collection接口提供了一个stream()默认方法,该方法可返回该集合对应的流,接下来即可通过流API来操作集合元素。由于Stream可以对集合元素进行整体的聚集操作,因此Stream极大了丰富了集合的功能。