《Stream》——————常用方法经典练习题,对两个队伍的成员姓名进行相关操作

有两个Arraylist集合,存储队伍中的多个成员姓名,使用Stream方式,对以下步骤进行操作
1、第一个队伍只要名字为3个字的成员姓名
2、第一个队伍只要筛选之后的前三个人

3、第二个队伍只要姓张的
4、第二个队伍筛选之后不要前两个人

5、将两个队伍合并成一个队伍
6、合并之后的队伍中的所有人的Person(自定义类型)对象,存储到一个ArrayList集合中

队伍1:宫本武藏、宋公明、苏有朋、石头人、时传祥、李耳、庄子、洪七公
队伍2:帕瓦罗蒂、张三疯、赵薇薇、张自忠、孛儿只斤铁木真、张天爱、张翠花

 

package com.cc.day19;

import java.util.ArrayList;
import java.util.stream.Stream;

/*有两个Arraylist集合,存储队伍中的多个成员姓名,使用Stream方式,对以下步骤进行操作
1、第一个队伍只要名字为3个字的成员姓名
2、第一个队伍只要筛选之后的前三个人

3、第二个队伍只要姓张的
4、第二个队伍筛选之后不要前两个人

5、将两个队伍合并成一个队伍
6、合并之后的队伍中的所有人的Person(自定义类型)对象,存储到一个ArrayList集合中

队伍1:宫本武藏、宋公明、苏有朋、石头人、时传祥、李耳、庄子、洪七公
队伍2:帕瓦罗蒂、张三疯、赵薇薇、张自忠、孛儿只斤铁木真、张天爱、张翠花*/
public class Demo08 {

	public static void main(String[] args) {
		String str1 = "宫本武藏、宋公明、苏有朋、石头人、时传祥、李耳、庄子、洪七公";
		String str2 = "帕瓦罗蒂、张三疯、赵薇薇、张自忠、孛儿只斤铁木真、张天爱、张翠花";
		// 将两个队伍的名字分别以顿号分割成字符串数组
		String[] s1 = str1.split("、");
		String[] s2 = str2.split("、");
		// 创建两个list集合存储两个队伍的名字
		ArrayList<String> list1 = new ArrayList<>();
		ArrayList<String> list2 = new ArrayList<>();
		// 分别遍历两个字符串数组,将名字加进集合中
		for (String s : s1) {
			list1.add(s);
		}
		for (String s : s2) {
			list2.add(s);
		}
		test01(list1);
		System.out.println("************************");
		test02(list1);
		System.out.println("************************");
		test03(list2);
		System.out.println("************************");
		test04(list2);
		System.out.println("************************");
		test05(list1, list2);
		System.out.println("************************");
		test06(list1, list2);
	}

	public static void test01(ArrayList<String> list) {
		list.stream().filter(x -> x.length() == 3).forEach(System.out::println);
	}

	public static void test02(ArrayList<String> list) {
		list.stream().filter(x -> x.length() == 3).limit(3).forEach(System.out::println);
	}

	public static void test03(ArrayList<String> list) {
		list.stream().filter(x -> x.startsWith("张")).forEach(System.out::println);
	}

	public static void test04(ArrayList<String> list) {
		list.stream().filter(x -> x.startsWith("张")).skip(2).forEach(System.out::println);
	}

	public static void test05(ArrayList<String> list1, ArrayList<String> list2) {
		/*
		 * list1.addAll(list2); list1.stream().forEach(System.out::println);
		 */
		// 流1
		Stream<String> stream1 = list1.stream();
		// 流2
		Stream<String> stream2 = list2.stream();
		// 合并两个流
		Stream<String> concat = Stream.concat(stream1, stream2);
		concat.forEach(System.out::println);
	}

	public static void test06(ArrayList<String> list1, ArrayList<String> list2) {
		ArrayList<Person> result = new ArrayList<>();
		// 流1
		Stream<String> stream1 = list1.stream();
		// 流2
		Stream<String> stream2 = list2.stream();
		// 合并两个流
		Stream<String> concat = Stream.concat(stream1, stream2);
		//concat.map(x->new Person(x)).forEach(System.out::println);;
		//concat.map(Person::new).forEach(System.out::println);
		concat.map(Person::new).forEach(result::add);
		result.stream().forEach(System.out::println);
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值