Stream流中.filter和.map的用法区别
.filter和.map的区别:1.filter和map都是中间操作,返回的都是流;2.filter返回的流中元素个数不超过原始流中元素个数;3.map返回的流中元素个数与原始流中元素个数相等 这句话说的对吗




2. filter元素个数 ≤ 原始流
2.1练习例子
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);long originalCount = numbers.stream().count(); // 5
long filteredCount = numbers.stream().filter(n -> n % 2 == 0) // 只保留偶数.count(); // 2System.out.println("原始个数: " + originalCount); // 5
System.out.println("过滤后个数: " + filteredCount); // 2map元素个数 = 原始流
2.2练习例子
List<String> list = Arrays.asList("apple", "banana", "cherry");long originalCount = list.stream().count(); // 3
long mappedCount = list.stream().map(String::toUpperCase) // 每个元素都被转换.map(s -> s + "!") // 仍然是1对1转换.count(); // 3System.out.println("原始个数: " + originalCount); // 3
System.out.println("转换后个数: " + mappedCount); // 33.IDEA练习
//1.stream流中集合的创建List<String> list = Arrays.asList("a","b","c");Stream<String> stream = list.stream(); //单行流Stream<String> parallerStream = list.parallelStream(); //并行流// .filter和.map的区别:// 1.filter和map都是中间操作,返回的都是流;// 2.filter返回的流中元素个数不超过原始流中元素个数;3.map返回的流中元素个数与原始流中元素个数相等//流的中间操作 --过滤操作filter//括号中的过滤条件使用的是Lambda表达式写法List<String> result = list.stream().filter(s -> s.startsWith("a")).toList();//流的中间操作 --映射转换map,既可以使用方法引用写法,也可以使用Lambda表达式写法//括号中的过滤条件使用的的是方法引用写法,这个写法也可以写成下面的形式List<String> upperCase = list.stream().map(String::toUpperCase).toList();//括号中的两种写法,idea建议写方法引用,使用lambda表达式会报黄线Stream<String> stringStream = list.stream().map(s -> s.toUpperCase());//练习例子List<String> fruits = Arrays.asList("apple", "banana", "avocado", "apricot", "orange");//组合使用filter和mapList<String> test1 = fruits.stream().filter(s -> s.startsWith("a")) //过滤以a开头的.map(String::toUpperCase)
// .collect(Collectors.toList()); 本行的写法idea建议换成下面的形式.toList();List<String> test2 = fruits.stream().filter(s -> s.length() > 5).map(String::toUpperCase) //lambda.map(s -> "fruit:" + s) //lambda.toList();//练习例子 都是中间操作,返回流练习List<String> test3 = Arrays.asList("a1", "a2", "b1", "b2");Stream<String> filterStream = test3.stream().filter(s -> s.startsWith("a"));Stream<String> mapStream = test3.stream().map(String::toUpperCase);//他们返回的都是stream对象,需要终止操作才能得到结果List<String> result1 = filterStream.toList();List<String> result2 = mapStream.toList();