是什么?
Collection可以将Stream流转换为不同的类型
(什么是Stream流:http://t.csdn.cn/GnYJg)
为什么?
当我们在使用Stream流对集合或者数组进行操作的时候,最终会转换为Stream流对象,但是我们最终想得到的又是原来的对象,因此我们可以使用Collection来对Steam进行转换
怎么做?
通过下面的案例来演示:
public static void main(String[] args) {
//collection:将流转换为其他类型
List <Integer> list = Arrays.asList(1,2,3,451,51);
//先将list转换为流
Stream<Integer> stream = list.stream();
System.out.println(stream);
System.out.println("===========================");
//将流转换为list
List<Integer> collect = stream.collect(Collectors.toList());
System.out.println(collect);
System.out.println("===========================");
//将流转换为set
Set<Integer> integerSet = list.stream().collect(Collectors.toSet());
System.out.println(integerSet);
System.out.println("===========================");
//将流转换为map
Map<Integer, Integer> collect1 = list.stream().collect(Collectors.toMap(k -> k, v -> v));
System.out.println(collect1);
System.out.println("===========================");
//将流转换为treeset
TreeSet<Integer> tree= list.stream().collect(Collectors.toCollection(()->new TreeSet<>()));
System.out.println(tree);
System.out.println("===========================");
//可以很明显的发现summarizingint里面包含了求个数,求和,求平均数和最大最小值的方法
IntSummaryStatistics collect2 = list.stream().collect(Collectors.summarizingInt(ele -> ele));
System.out.println(collect2);
}
}
分组与分区操作(了解)
当我们在拿到一串数据的时候往往想根据其数据的不同特性来对它进行分类;
我们可以使用Collection中的Collectors.groupingBy和Collectors.partitioningBy来对其进行分组和分区
Collectors.groupingBy()对元素做group操作。分组--根据条件分成多个组 Collectors.partitioningBy()对元素进行二分区操作。分区--根据boolean条件分成两个区