涉及知识点:
1. Lamda表达式
2. 方法引用、四个函数式接口
3. 如何使用Stream数据流进行集合的辅助操作,MapReduce的使用过程
具体内容:
在JDK1.8开始整个类集里面所提供的接口出现了大量的default或static 方法,以Collection的父接口Iterable接口定义的一个方法来看:
default void forEach(Consumer<?super T>action)//参数是消费型的函数式接口
在jdk1.8中提供了一个专门进行数据处理的工具类--Stream,Stream可以直接利用Collection提供的接口提供的方法操作
- 计数操作:
public class Test {
public static void main(String[] args) throws Exception{
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
Stream<String> stream = list.stream();//取得Stream类的对象
System.out.println(stream.count());//取得数据个数
}
}
- 去掉重复数据的计数:
public class TestDistinct {
public static void main(String[] args) throws Exception{
List<String> list = new ArrayList<String>();
list.add("A");
list.add("A");
list.add("B");
list.add("C");
list.add("G");
list.add("g");
Stream<String> stream = list.stream();
System.out.println(stream.distinct().count());
}
}
public class TestDistinct {
public static void main(String[] args) throws Exception{
List<String> list = new ArrayList<String>();
list.add("A");
list.add("A");
list.add("B");
list.add("C");
list.add("G");
list.add("g");
Stream<String> stream = list.stream();
//System.out.println(stream.distinct().count());//计算不重复的数据的个数
//去掉所有重复的数据形成新的集合数据,里面不包含重复内容的集合
List<String> list2 = stream.distinct().collect(Collectors.toList());
System.out.println(list2);
}
}