一 不可变集合
二 Stream流使用步骤
Note:
1. 单列集合直接使用stream()得到Stream流
2. 双列集合要先转成单列集合再使用stream流,如转为entrySet, keySet
3. 数组使用Arrays.stream(array)得到Stream流
4. 一堆零散数据使用Stream.of(data)得到Stream流,如果传入数组,必须是引用数据类型的,如果传递基本数据类型,是会把整个数组当成一个元素放入Stream流中
三 Stream的中间方法
四 Stream流的终结方法
五 练习
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i < 11; i++) {
list.add(i);
}
List<Integer> collect = list.stream().
filter(s -> s % 2 == 0).
collect(Collectors.toList());
System.out.println(collect);
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"zhangsan,23", "lisi,24", "wangwu,25");
Map<String, Integer> map = list.stream()
.filter(s -> Integer.parseInt(s.split(",")[1]) >= 24)
.collect(Collectors.toMap(s -> s.split(",")[0], s -> Integer.parseInt(s.split(",")[1])));
System.out.println(map);
ArrayList<String> list_male = new ArrayList<>();
Collections.addAll(list_male,"路平石,23", "杨洋,24", "瓦房无,25", "薛之前,63", "周汇,25", "梁朝伟,28");
ArrayList<String> list_female = new ArrayList<>();
Collections.addAll(list_female,"杨兰,23", "赵丽颖,24", "杨兰新,25", "周女,63", "杨小迪,25", "罗婷,28");
Stream<String> male = list_male.stream()
.filter(s -> s.split(",")[0].length() == 3)
.limit(2);
Stream<String> female = list_female.stream()
.filter(s -> s.split(",")[0].startsWith("杨"))
.skip(1);
List<Actor> list = Stream.concat(male, female)
.map(s -> new Actor(s.split(",")[0], Integer.parseInt(s.split(",")[1])))
.collect(Collectors.toList());
System.out.println(list);
//Actor类的定义省略