stream流的中间方法
1. filter() 过滤
2. skip() 跳过前面的数据,只保留后面的数据
3. limit() 只保留前面的数据
4. concat() 合并
5. map() 转换数据类型
6. distinct() 元素去重
代码展示:
package com.atxiaoyao.stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class StreamDemo1 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"刘备","曹操","孙权","袁绍","卢布","关羽","马良","刘邦","刘璋","孙权","关羽");
ArrayList<String> list2 = new ArrayList<>();
Collections.addAll(list2,"貂蝉","西施","玉环","昭君");
ArrayList<String> list3 = new ArrayList<>();
Collections.addAll(list3,"东方不败-1-25","令狐冲-0-22","余不群-1-50","林平之-1-23","田伯光-0-35");
/*
* @Author Shang
* @Description stream流的中间方法
* @Data 2023/7/29 21:27
* @Param [args]
*/
// filter 过滤
list.stream()
.filter(s -> s.startsWith("刘"))
.forEach(s -> System.out.println("streamFilter = " + s));
// skip() 跳过前面的,保留后面的
list.stream()
.skip(3).
forEach(s -> System.out.println("streamSkip = " + s));
// limit() 保留前面的,后面的丢掉
list.stream()
.limit(4)
.forEach(s -> System.out.println("streamLimit = " + s));
// distinct() 元素去重 底层使用了HashSet()去重,依赖hashCode和equals方法
list.stream()
.distinct()
.forEach(s -> System.out.println("streamDistinct = " + s));
// concat() 合并两个流为一个流
Stream.concat(list.stream(),list2.stream())
.forEach(s -> System.out.println("streamConcat = " + s));
// map() 转换数据类型
list3.stream()
.map(s -> Integer.parseInt(s.split("-")[2]))
.forEach(s-> System.out.println("streamMap = " + s));
}
}
stream流的收集方法
1. toList(); 收集到list集合中
2. toSet(); 收集到set集合中
3. toMap(); 收集到map集合中
代码展示:
package com.atxiaoyao.stream;
import java.util.*;
import java.util.stream.Collectors;
public class StreamDemo2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"杨幂-1","李连杰-0","成龙-0","许嵩-0","周杰伦-0","王腾-0","杨洋-0","成龙-0","杨幂-1");
ArrayList<String> list1 = new ArrayList<>();
Collections.addAll(list1,"李连杰-0","成龙-0","许嵩-0","周杰伦-0","王腾-0","杨洋-0","杨幂-1");
// 收集到list集合中
// toList();
List<String> collectList = list.stream()
.filter(s -> s.startsWith("杨"))
.collect(Collectors.toList());
System.out.println("collectList = " + collectList);
// 收集到set集合中
// toSet(); 元素去重
Set<String> collectSet = list.stream()
.collect(Collectors.toSet());
System.out.println("collectSet = " + collectSet);
// 收集到map集合中
// TODO:收集到的数据key不可以重复,重复会报错
Map<String, Integer> collectMap = list1.stream()
.filter(s -> "0".equals(s.split("-")[1]))
.collect(Collectors.toMap(s -> s.split("-")[0], s -> Integer.parseInt(s.split("-")[1])));
System.out.println("collectMap = " + collectMap);
}
}
说明:文章技术来源于B站黑马Java基础教程,Java-Stream流从入门到精通。若代码不清晰,可以去看视频学习。非黑马人员,无宣传意味,仅学习而已。