Day10 总结 -Stream流
Day10 - 总结
一、Stream流的常见操作方法
1、Stream流的获取
1.1、单列集合:
- 格式:集合对象 .stream();
ArrayListlist = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); //简化前代码 Stream stream = list.stream(); stream.forEach(s -> System.out.println(s)); //简化后代码 list.stream().forEach(s-> System.out.println(s));
1.2、双列集合:
双列集合不能直接获取Stream流 需通过 kaySet 或 entrySet来间接获取Stream流
kaySet格式:集合对象.keySet().stream(); //获取到所有的 键 对象
values格式:集合对象.values().stream(); //获取到所有的 值 对象
entrySet格式:集合对象.entrySet().stream(); //获取到所有的 键值对 对象
HashMapmap = new HashMap<>(); map.put("zhangsan",20); map.put("lisi",22); map.put("wangwu",24); map.put("zhaoliu",26); //keySat //先获取到所有的键 //然后在把这个Set集合中的所有的键放到stream流中 map.keySet().stream().forEach(s-> System.out.println(s)); //values //先获取到所有的值 //然后在把这个Set集合中的所有的值放到stream流中 map.values().stream().forEach(s-> System.out.println(s)); //entrySet //先获取到所有的键值对对象 //然后在把这个set的集合中所有的键值对对象放到Stream流中 map.entrySet().stream().forEach(s-> System.out.println(s));
2、中间操作方法
2.1、filter() 过滤方法
- Stream filter(Predicate predicate) : 用于对流中的数据进行过滤
- Predicate 接口中的方法
- boolean test(T t) : 对给定的参数进行判断,返回一个布尔值
ArrayListlist = new ArrayList<>(); list.add("张三丰"); list.add("张无忌"); list.add("张翠山"); list.add("王二麻子"); list.add("谢广坤"); list.add("张良"); //filter方法获取流中的每一个数据。 //而test方法中的是,就是依次表示流中的每一个数据。 //我们只要 在test方法中对是进行判断就可以了。 //如果判断的结果为true, 则当前的数据留下 //如果判断的结果为false,则当前的数据就不要 // 方法一 使用匿名内部类方法实现 过滤 list.stream().filter(new Predicate () { @Override public boolean test(String s) { boolean result = s.startsWith("张"); return result; } }).forEach(s -> System.out.println(s)); // 方法二 使用lambda 表达式 // 因为Predicate接口中只有一个抽象的方法test // 所以我们可以使用lambda表达式来简化 代码 list.stream().filter(s -> { boolean result = s.startsWith("张"); return result; }).forEach(s -> System.out.println(s)); // 再一次简化 lambda 表达式 list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));