1.Collection接口是List、Set和Queue接口的父接口,该接口里面定义方法即可用与操作Set集合,也用于操作List和Queue集合。Collection接口里面定义一些操作集合元素的方法。boolean add(Object o):该方法用于向集合里面添加一个元素。boolean addAll(Collection c):该方法把集合c里面的所有元素添加到指定集合里面。 void clear():清除集合里面的的所有元素,将集合长度变为0。boolean contains(Object o):返回集合里面包含指定元素。boolean containsAll(Collection c):返回集合是否包含集合c里的所有元素。boolean isEmpty():返回集合是否为空。 Iterator iterator():返回一个Iterator对象用于遍历集合里面的所有元素。boolean remove(Object o):删除集合中的指定元素,当集合里面有多元素,只删除第一个符合条件的元素。boolean removeAll(Collection c):从集合里面删除c里面包括所有元素。boolean ratainAll(Collection c):从集合中删除集合c里面的不包含的所有元素。(相当于求交集)。int size():返回集合里面的元素个数。Object [] toArray():该方法把集合转换成一个数组,所有集合中的元素变为对应的数组的元素。
2.java8为Iterable接口新增加了一个forEach(Consumer action)默认方法,该方法所需参数的类型是一个函数式接口,而Iterable接口是Collection接口的父类接口,因此Collection集合也可以直接调用该方法。当程序调用Iterable的forEach(Consumer action)遍历集合元素是=时,程序会依次将集合的元素传给Consumer的accept(T t)方法,该接口中唯一的抽象方法。正因为Consumer是函数式接口,因此可以使用Lambda表达式来遍历几何元素。
package com.lanou.test;
import java.util.ArrayList;
public class Demo05 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList arraylist=new ArrayList();
arraylist.add(1);
arraylist.add("jsdjk");
arraylist.add(656);
arraylist.forEach(obj->{System.out.println(obj);});
}
}
3.Iterator接口也是java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历Collection集合中元素,Iterator对象也被成为迭代器。Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供遍历Collection集合元素的统一的编程接口。Iterator接口实现的方法boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回true;Object next():返回集合的下一个元素。void remove():删除集合里上一次next方法返回的元素.void forEachRemaining(Consumer action):该方法可使用Lambda表达式来遍历集合。
package com.lanou.test;
import java.util.HashSet;
import java.util.Iterator;
public class Demo07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet hashset=new HashSet();
hashset.add("fjkjk");
hashset.add("jfdsjk");
hashset.add("asdds");
Iterator it=hashset.iterator();
while(it.hasNext()){
String temp=(String)it.next();
System.out.println(temp);
}
}
}
4.java8为Collection集合新增一个removeIF(Predicte filter)方法,该方法将会批量删除符合filter条件的所有元素,该方法需要一个Predicate(谓词)对象作为参数,Predicate也是函数式接口,因此可使用lanbda表达式作为参数。如hashset.removeIF(ele->((String)ele).length()<10)。
5.java8还新增了Stream、IntStream、Longstream、DoubleStram等流式API,这些API代表多个支持串行和并行聚集操作元素。四个接口中,Stream是一个通用的流接口,而InStream、LongStream、DoubleStream则代表元素类型为Int、long、double的流。