感受stream流
代码
package demo1;import javax.naming.Name;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class StreamDemo1 {public static void main(String[] args) {ArrayList<String> list1 = new ArrayList<>();list1.add("张强");list1.add("张无忌");list1.add("周芷若");list1.add("赵敏");list1.add("张三丰");list1.stream().filter(name ->name.startsWith("张")).filter(name ->name.length() ==3).forEach(name -> System.out.println(name));}
}
运行效果
Stream流的作用
结合了Lambda表达式,简化集合、数组的操作
使用步骤
1.先得到一条Stream流(流水线),并把数据放上去
2.使用中间方法对流水线上的数据进行操作
3.使用终结方法对流水线上的数据进行操作
代码01
package demo1;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class StreamDemo2 {public static void main(String[] args) {ArrayList<String> list =new ArrayList<>();Collections.addAll(list,"a","b","c","d","e");list.stream().forEach(s -> System.out.println(s));}
}
运行效果
代码02
package demo1;import java.util.HashMap;
import java.util.stream.Stream;public class StreamDemo3 {public static void main(String[] args) {HashMap<String,Integer> hm = new HashMap<>();hm.put("aaa",111);hm.put("bbb",222);hm.put("ccc",333);hm.put("ddd",444);//第一种获取stream流hm.keySet().stream().forEach(s-> System.out.println(s));//第二种获取stream流hm.entrySet().stream().forEach(s ->System.out.println(s));}
}
运行结果
代码03
package demo1;import java.util.Arrays;public class StreamDemo4 {public static void main(String[] args) {int[] arr1= {1,2,3};String[] arr2 ={"a","b","c"};Arrays.stream(arr1).forEach(s ->System.out.println(s));Arrays.stream(arr2).forEach(s ->System.out.println(s));}
}
运行效果
代码04
kage demo1;import java.util.stream.Stream;public class StreamDemo5 {public static void main(String[] args) {Stream.of(1,2,3,4).forEach(s ->System.out.println(s));Stream.of("a","b","c").forEach(s ->System.out.println(s));}
}
运行效果
stream流的中间方法
代码
package demo2;import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;public class a2 {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();Collections.addAll(list,"张三-100","王五-200","李四-100");list.stream().map(s -> Integer.parseInt(s.split("-")[1])).forEach(s -> System.out.println(s));}
}
运行结果
stream流的终极方法
代码
package demo2;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;public class a3 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list ,"路人甲","张三","李四","王五");long count = list.stream().count();System.out.println(count);String[] arr2 = list.stream().toArray(value -> new String[value]);System.out.println(Arrays.toString(arr2));}
}
运行效果
收集方法collect
package demo2;import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class a {public static void main(String[] args) {ArrayList<String> list =new ArrayList<>();Collections.addAll(list,"张三-男-1","李四-男-2","王五-女-3");//收集List集合当中男性List<String> newlist1 = list.stream().filter(s ->"男".equals(s.split("-")[1])).collect(Collectors.toList());System.out.println(newlist1);//收集Map集合中的男性Set<String> newList2 = list.stream().filter(s ->"男".equals(s.split("-")[1])).collect(Collectors.toSet());System.out.println(newList2);}
}
总结
1.Stream流的作用
结合了Lambda表达式,简化集合、数组的操作
2.Stream的使用步骤
获取Stream流对象
使用中间方法处理数据
使用终结方法处理数据
3.如何获取Stream流对象
单列集合:collection中的默认方法stream
双列集合:不能直接获取
数组:Arrays工具类型中的静态方法stream一堆零散的数据:Stream接口中的静态方法0
4.常见方法
中间方法:
filter, limit, skip, distinct, concat, map终结方法:
forEach, count, collect