一、4种集合类型java
List:有序可重复集合。数组
Queue:队列集合。多线程
Set:无序不可重复集合。框架
-------------------------------函数
Map:关系映射集合。spa
二、全部的集合类都位于java.util包下。java.util.concurrent下在java5后增长了多线程支持的集合类。线程
三、数组中的元素能够是基本数据类型的值,也能够是对象。而集合中只能保存对象。code
四、集合的派生关系对象
Collection体系:LinkedList最特殊,有两个父接口。queue与List相似。blog
Map体系:
Map保存的每项数据都是key-value对。
总结:因为queue相似于List,因此集合大致能够分为3类,即List、Map、Set。访问List集合中的元素,能够经过元素的索引来访问;若是访问Map中的元素,能够根据每项元素的key来访问其value;若是访问Set中的元素,只能经过元素自己(这也是Set不容许元素重复的缘由)。
五、Collection接口,是Set、Queue、List接口的父接口。
其定义的方法有:
1》boolean add(Object o):向集合中添加一个元素。集合对象被添加操做改变了,则返回true。
2》boolean addAll(Collection c):将集合c中的全部元素添加到指定的集合中。集合对象被添加操做改变了,则返回true。
3》void clear():清除集合里的全部元素,将集合长度变为0。
4》void contains(Object o):返回集合中是否包含指定元素。
5》boolean containsAll(Collection c):返回集合里是否包含集合c里的全部元素。
6》boolean isEmpty():返回集合是否为空。当集合长度为0时返回true,不然返回false。
7》Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
8》boolean remove(Objeact o):删除集合中的指定元素o,当集合中包含了一个或者多个元素o时,该方法只删除第一个符合条件的元素,该方法将返回true。
9》boolean removeAll(Collection c):从集合中删除集合c里包含的全部元素(至关于调用该方法的集合减集合c),若是删除了一个或者一个以上的元素,则该方法返回true。
10》boolean retainAll(Collection c):从集合中删除集合c里不包含的元素(至关于把调用该方法的集合变成该集合和集合c的交集),若是该操做改变了调用该方法的集合,则该方法返回true。
11》int size():该方法返回集合里元素的个数。
12》Object[] toArray():该方法把集合转换成数据,全部的集合元素变成对应的数据元素。
六、Iterator接口也是Java集合框架的成员,Iterator主要用于遍历(迭代)Collection集合中的元素,Iterator对象也被称为迭代器。其定义了以下4个方法:
1》bolean hasNext():若是被迭代的集合还有元素没有被迭代完,则返回true。
2》Object next():返回集合里的下一个元素。
3》void remove():删除集合里上一次next方法返回的元素。
4》void forEachRemaining(Consumer action):Java 8为Iterator新增的默认方法,该方法能够使用Lambda表达式遍历集合。
使用Iterator对集合元素进行迭代时,Iterator并非把集合元素自己传给了迭代变量,而是把集合元素的值传递给了迭代变量,即修改迭代变量的值对集合元素自己没有任何影响。经过Iterator的remove()方法删除上一次next()方法返回的集合元素。
七、使用foreach循环遍历集合元素
for(String book:books){ System.out.println(book); }
使用Iterator对集合元素进行迭代时,Iterator并非把集合元素自己传给了迭代变量,而是把集合元素的值传递给了迭代变量,修改迭代变量值是无心义的。迭代过程中不能修改集合中的元素,好比调用集合的remove()方法。
八、Java 8新增的Predicate操做集合
Java 8为Collection集合新增一个removeIf(Predicate filter)方法,该方法将会批量删除符合filter条件的全部元素。Predicate也是函数式接口。
Collection books=new HashSet(); ... books.removeIf(ele->((String)ele).length()<10);
九、Java 8新增的Stream操做集合
Java 8还新增了Stream、IntStream、LongStream、DoubleStream等流式API。