使用步骤:
1.先得到一条流,并把数据放进去
获取方法
ArrayList<String> list=new ArrayList<>(); Stream<String> stream1=list.stream(); //单列集合获取 HashMap<String,String> hm=new HashMap<>(); hm.put("abc","111"); Stream<Map.Entry<String,String>> stream2=hm.entrySet().stream; //双列集合可以先将集合中的键值对对象放入Set集合中再获取Stream流 int []arr={1,2,3}; Stream<int> stream3=Arrays.stream(arr1); //数组通过Arrays方法 Stream<T> stream4=Stream.of(1.2.3.4.5); //零散数据通过Stream接口中的静态方法 //方法的形参是可变参数,可以传递数组,但是传递的必须是引用数据类型,如果传递的是基本数据类型,会将整个数组当成一个元素放入流中
2.利用中间方法对流中数据进行操作
filter:
//list是已经存在的集合 list.stream().filter( s-> s.stradWith("张") //s代表集合的每一个数据,return ture表示留下 false表示去掉 )
map:
//泛型第二个数据表示要转换后的数据 list.stream().map(new Function<Sting,Integer>(){ @Override public Object apply(String s){ int num=Integer.parseInt(s) return num; //形参表示流里的每一个数据 返回值表示转换后的数据 } });
3.Stream终结方法
forEach
list.stream.forEach(s->System.out.println(S)); //s依次表示每一个数据,方法体还可以进行其他操作
toArray
Object[]arr1= list.stream.toArray(); //默认object 形参 Map.Entry[]arr2=list.stream.toArray( new InterFunction<?extend Object[]//表示具体类型的数组//>(){ @Override public Object[] apply(int value){ return new String[value]; } }); //apply形参:流中数据的个数 //返回值:具体类型的数组 //指定数组,如果放不下会重新创建数组
collect
//将流的数据放入List集合中 ArrayList<String> list=...; List<String> newList= list.stream().collect(Collectors.toList()); //将流的数据放入Set集合中:会去除重复元素 Set <String> newSet = list.stream().collect(Collectors.toSet ()); //将流的数据放入Map集合中:键不能重复,重复报错 //toMap:参数一:键的生成规则 参数二:表示值的生成规则 Function 泛型一:表示流中每一个泛型的类型,泛型二:表示集合中的数据类型 apply形参:依次表示流里的每一个数据 方法体:生成键的代码 返回值:已经生成的键 Set <String> newMap = list.stream().collect(Collectors.toMap (new Function<String,String>(){ return NULL }, new Function<String,String>(){ return NULL } ));