Stream流的各种API方法
Stream流的中间方法
注意:
- 使用中间方法会返回新的Stream流, 原来的stream流只能使用一次, 建议使用链式编程
- 修改stream流中的数据, 不会影响原来集合或者数组中的数据
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class Demo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张三","李四","王五","张三丰","小蜘蛛","小李子","张无忌","小蜘蛛","小蜘蛛");
// stream流过滤方法 -- filter
list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
System.out.println("====================");
// stream流获取前几个元素 -- limit
list.stream().limit(3).forEach(s -> System.out.println(s));
System.out.println("====================");
// stream流跳过前几个元素 -- skip
list.stream().skip(4).forEach(s -> System.out.println(s));
System.out.println("====================");
// stream流去重元素 -- forEach
list.stream().distinct().forEach(s -> System.out.println(s));
System.out.println("====================");
// stream流合并 -- concat
ArrayList<String> newList = new ArrayList<>();
Collections.addAll(newList,"梅西","内马尔","苏亚雷斯");
Stream.concat(list.stream(),newList.stream()).forEach(s -> System.out.println(s));
System.out.println("====================");
// stream流的数据类型转换 -- map
ArrayList<String> newListAge = new ArrayList<>();
Collections.addAll(newListAge,"梅西-36","内马尔-31","苏亚雷斯-34","杜兰特-35");
// 获取每个球星的年龄
newListAge.stream().map(s -> Integer.parseInt(s.split("-")[1])).forEach(s -> System.out.println(s));
}
}
Stream流的终结方法
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Demo4 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张三","李四","王五","张三丰","小李子","张无忌","小蜘蛛");
// stream流遍历方法 -- forEach
list.stream().forEach(s -> System.out.println(s));
System.out.println("====================");
// stream流统计方法 -- count
long count = list.stream().count();
System.out.println(count);
System.out.println("====================");
// stream流收集流中的数据存储到数组中 -- toArray
// 方法一: 转换成Object类型的数组
Object[] objects = list.stream().toArray();
System.out.println(Arrays.toString(objects));
System.out.println("====================");
// 方法一: 转换成具体类型的数组 -- toArray[参数]
// 参数的作用: 负责创建一个指定类型的数组, 底层原理就是把流中的每个数据存储到指定类型的数组中并返回
// lambda表达式中的 s 代表stream流中的元素个数
String[] array = list.stream().toArray(s -> new String[s]);
System.out.println(Arrays.toString(array));
}
}
import java.util.*;
import java.util.stream.Collectors;
public class Demo5 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"梅西-男-36","内马尔-31","苏亚雷斯-男-34","杜兰特-男-35","安东内拉-女-32","王爽-女-25");
// stream流 收集流中的数据放到集合中
// 方法1: 收集男性的数据存储到list集合中 -- collect(Collectors.toList())
List<String> newList = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toList());
System.out.println(newList);
System.out.println("====================");
// 方法2: 收集男性的数据存储到set集合中 -- collect(Collectors.toSet()) 具有去重作用
Set<String> setList = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toSet());
System.out.println(setList);
System.out.println("====================");
// 方法2: 收集男性的数据存储到map集合中 -- collect(Collectors.toMap(参数一,参数二)) 参数一: 键的生成规则; 参数二: 值的生成规则
// 注意: map中的键不能重复, 名字作为键, 年龄作为值
Map<String, String> map = list.stream().filter(s -> "男".equals(s.split("-")[1]))
.collect(Collectors.toMap(s -> s.split("-")[0], s -> s.split("-")[2]));
System.out.println(map);
}
}
CSDN-Ada助手: CS入门 技能树或许可以帮到你:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml
征途黯然.: SpringAOP注解开发详解 article is fantastic! It's truly eye-opening.
普通网友: 感谢大佬分享好文,学到了不少新知识,支持大佬,期待大佬持续输出优质文章!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】
CSDN-Ada助手: Java 技能树或许可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java
虞舟: canal 下载哪个版本呢?