收集Stream流的含义:就是把Stream流操作后的结果转回到集合或数组中去
Stream流:方便操作集合、数组的手段
集合、数组:才是开发的目的
操作的结果数据最终要恢复到集合或者数组中去
package domestream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.function.IntFunction;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list=new ArrayList<>();
Collections.addAll(list, "张三","李四","王五","张飞","李四");
Stream<String> ss1=list.stream().filter(s->s.startsWith("张"));//把姓张的人去出来
List<String> l1=ss1.collect(Collectors.toList());
System.out.println(l1);//输出[张三, 张飞]
//注意流只能使用一次
// Set<String> set1=ss1.collect(Collectors.toSet());//报错
// System.out.println(set1);
Stream<String> ss2=list.stream().distinct();
Set<String> set1=ss2.collect(Collectors.toSet());
System.out.println(set1);//输出[李四, 张三, 张飞, 王五]
//返回数组
Stream<String> ss3=list.stream().filter(s->s.startsWith("张"));
Object[] arr=ss3.toArray();
System.out.println("数组的内容为:"+Arrays.toString(arr));
//如果就想返回字符串类型的数组
Stream<String> ss4=list.stream().filter(s->s.startsWith("张"));
// String[] arr2=ss4.toArray(new IntFunction<String[]>() {
//
// @Override
// public String[] apply(int value) {
// // TODO Auto-generated method stub
// return new String[value];
// }
// });
//化简
String[] arr2=ss4.toArray((int value)-> {
return new String[value];
});
System.out.println("字符串数组的内容为"+Arrays.toString(arr2));
}
}