课程名称:一课掌握Lambda表达式语法及应用
课程章节:第四章第四节
主讲老师:大牧莫邪
public class test4 { public static void main(String[] args) { // 1:批量数据 // 多个数据 Stream stream = Stream.of("admin","hh","oh"); // 数组 String[] arr = {"arr","hh","tom"}; Stream stream1 = Arrays.stream(arr); // 列表 List<String> list = new ArrayList<>(); list.add("admin"); list.add("hh"); Stream stream2 = list.stream(); // 集合 Set<String> set = new HashSet<>(); set.add("admin"); set.add("hh"); Stream stream3 = set.stream(); // Map Map<Object, Object> map = new HashMap<>(); map.put("admin", "admin"); map.put("hh", "hh"); Stream stream4 = map.entrySet().stream(); // 2:Stream对于基本数据类型的功能封装 // IntStream.of(new int[] {10, 20, 30}).forEach(System.out::println); // IntStream.range(1, 5).forEach(System.out::println); //不包含最后一个元素 // IntStream.rangeClosed(1, 5).forEach(System.out::println); //包含最后一个元素 // 3:Stream对象 -> 转换得到指定类型 // 数组 // Object[] objx = stream.toArray(String[]::new); //stream一旦被使用,就会闭合,没有数据了,所以需要注释 // 字符串 // String str = stream.collect(Collectors.joining()).toString(); // System.out.println(str); //列表 // List<String> streamList = (List<String>) stream.collect(Collectors.toList()); // System.out.println(streamList); //集合 // Set<String> streamSet = (Set<String>) stream.collect(Collectors.toSet()); // System.out.println(streamSet); //map Map<String,String> streamMap = (Map<String, String>) stream.collect(Collectors.toMap(x->x, y->"value:"+y)); // System.out.println(streamMap); // Stream中常见的API操作 List<String> accountList = new ArrayList<>(); accountList.add("admin"); accountList.add("hh"); accountList.add("bb"); //map() 中间操作,map()方法接收一个Functional接口 // accountList = accountList.stream().map(x->"hero:" + x).collect(Collectors.toList()); //list转为Map,再转为list //filter() 添加过滤条件,过滤符合条件的用户 // accountList = accountList.stream().filter(x-> x.length() >=5).collect(Collectors.toList()); //ForEach 增强型循环 // accountList.forEach(x-> System.out.println("forEach->" + x)); //peek() 中间操作:迭代数据完成数据的依次处理 /*accountList.stream() .peek(x-> System.out.println("peek 1:" + x)) .peek(x-> System.out.println("peek 2:" + x)) .forEach(System.out::println);*/ // accountList.forEach(System.out::println); // Stream中对于数字运算的支持 List<Integer> intList = new ArrayList<>(); intList.add(10); intList.add(20); intList.add(30); intList.add(40); intList.add(50); intList.add(50); intList.add(50); //skip() 中间操作,有状态(对后续的数据是有影响的),跳过部分数据 // intList.stream().skip(3).forEach(System.out::println); //前三个数据被忽略,后续数据会被提取 // limit() 中间操作,有状态,限制输出数据量 // intList.stream().skip(3).limit(1).forEach(System.out::println); // distinct 中间操作,有状态,剔除重复数据 // intList.stream().distinct().forEach(System.out::println); // sorted() 中间操作,有状态,排序 // max() 获取最大值 Optional optional = intList.stream().max((x, y)-> x-y); // System.out.println(optional.get()); // min() 获取最小值 Optional optional2 = intList.stream().min((x,y)-> x-y); System.out.println(optional2.get()); // reduce() 合并处理数据 Optional optional1 = intList.stream().reduce((sum, x)-> sum + x); // System.out.println(optional1.get()); } }
这节课主要学习了Lambda中的集合及其用法,只能说,方便,是真的方便,之前从来没有发现这个优势,之前只是感觉Lambda的方式很标新立异,学到这里感觉这东西很牛!需要好好复习!
加油了,同志们