Stream流应用

发布于:2025-08-12 ⋅ 阅读:(18) ⋅ 点赞:(0)

本文总结自黑马阿伟的Java下,因为项目用得多,然后资料没有,所以总结一下:

题目:

实体类:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Actor {
    private String name;
    private Integer age;
}

答案:

	@Test
	void method_05() {
		//1.创建两个ArrayList集合
		ArrayList<String> manList = new ArrayList<>();
		ArrayList<String> womenList = new ArrayList<>();
		//2.添加数据
		Collections.addAll(manList, "蔡坤坤,24", "叶不翔,23", "刘不甜,22", "吴签,24", "谷嘉,30", "肖梁梁,27");
		Collections.addAll(womenList, "赵小颖,35", "杨颖,36", "高元元,43", "张天天,31", "刘诗,35", "杨小幂,33");
		//3.男演员只要名字为3个字的前两人
		Stream<String> stream1 = manList.stream()
				.filter(s -> s.split(",")[0].length() == 3)
				.limit(2);
		//.forEach(System.out::println);
		//4.女演员只要姓杨的,并且不要第一个
		Stream<String> stream2 = womenList.stream()
				.filter(s -> s.split(",")[0].startsWith("杨"))
				.skip(1);
		//.forEach(System.out::println);
		//5.把过滤后的男演员姓名和男演员姓名合并到一起
		List<Actor> list = Stream.concat(stream1, stream2).map(s ->
						new Actor(s.split(",")[0], Integer.parseInt(s.split(",")[1])))
				.collect(Collectors.toList());
		System.out.println(list);
	}