package com.itheima._6stream流.stream流的创建;
import java.util.stream.Stream;
public class TestMap {
public static void main(String[] args) {
//Stream的静态方法of 创建Stream流
Stream<String> stream = Stream.of("11", "22", "33", "44", "55");
//stream.forEach(s-> System.out.println(s));
//把这个stream流的元素映射成Integer类型的流
/* Stream<Integer> stream2 = stream.map((s) -> Integer.parseInt(s));
stream2.forEach(s-> System.out.println(s+1));*/
stream.map(s-> Integer.parseInt(s)).forEach(s-> System.out.println(s+1));
}
}
map练习
package com.itheima._6stream流.stream流的创建;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;
public class TestMap2 {
//把String类型的Stream流转换为Person类型的Stream流
public static void main(String[] args) {
List<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌","周芷若","赵敏","张三丰","张翠山","灭绝师太","张三");
//1.创建String类型的流
Stream<String> stream1 = list.stream();
//2.映射为Person类型的流
Stream<Person> personStream = stream1.map(s -> new Person(s));
//3.打印Person类型的流,遍历每一个Person对象
personStream.forEach(s-> System.out.println(s));//打印的是toString()方法
}
}
package com.itheima._6stream流.stream流的创建;
public class Person {
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
合并流
package com.itheima._6stream流.stream流的创建;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class Test2 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
Collections.addAll(list1,"aa","bb");
ArrayList<String> list2 = new ArrayList<>();
Collections.addAll(list2,"张三","李四");
//创建两个流对象
Stream<String> stream1 = list1.stream();
Stream<String> stream2 = list2.stream();
//合并流
Stream<String> sumStream = Stream.concat(stream1, stream2);
sumStream.forEach(s -> System.out.println(s));
}
}
综合练习1
package com.itheima._6stream流.stream流引入;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;
public class Test3 {
public static void main(String[] args) {
/*
Stream流的基本体验
需求:用Stream流方式进行以下操作
List<String> list= new ArrayList<>();
Collections.addAll(list,"张无忌","周芷若","赵敏","张三丰","张翠山","灭绝师太","张三");
1.首先筛选出所有姓张的人,把姓张的人存储到一个新的集合中
2.筛选名字中是3个字的人,把名字是3个字的人存储到一个新的集合中
3.对最后得到的集合进行遍历
*/
List<String> list= new ArrayList<>();
Collections.addAll(list,"张无忌","周芷若","赵敏","张三丰","张翠山","灭绝师太","张三");
//1.获取流
Stream<String> stream = list.stream();
//2.获取所有姓张
stream.filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(s -> System.out.println(s));
}
}
综合练习2
package com.itheima._6stream流.stream流综合练习;
import com.itheima._6stream流.stream流的创建.Person;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
// 第一个队伍
List<String> one = new ArrayList<>();
one.add("迪丽热巴");
one.add("宋远桥");
one.add("苏星河");
one.add("老子");
one.add("庄子");
one.add("孙子");
one.add("洪七公");
one.add("张无忌");
one.add("周伯通");
//1. 第一个队伍只要名字为3个字的成员姓名,把3个字成员的姓名存储到一个新的集合中
//2. 第一个队伍筛选之后只要前3个人,把前3个人存储到一个新的集合中
//把one集合转换为Stream流
Stream<String> oneStream = one.stream().filter(s -> s.length() == 3).limit(3);
one.stream().filter(s -> s.length() == 3).limit(3).forEach(s -> System.out.println(s));
System.out.println("=================================================================");
// 第二个队伍
List<String> two = new ArrayList<>();
two.add("古力娜扎");
two.add("张无忌");
two.add("张三丰");
two.add("赵丽颖");
two.add("张二狗");
two.add("张天爱");
two.add("张三");
//3. 第二个队伍只要姓张的成员姓名,把姓张的成员姓名存储到一个新的集合中
//4. 第二个队伍筛选之后不要前2个人,跳过前2个人,把其余的人存储到一个新的集合中
//把two集合转换为Stream流
Stream<String> twoStream = two.stream().filter(s -> s.startsWith("张")).skip(2);
two.stream().filter(s -> s.startsWith("张")).skip(2).forEach(s -> System.out.println(s));
System.out.println("=================================================================");
//5. 将两个队伍合并为一个队伍,把两个过滤之后集合组合为一个新的集合
//6. 根据姓名创建 Person 对象,把Person对象存储到一个新的集合
//7. 打印整个队伍的Person对象信息。
Stream.concat(oneStream,twoStream).map(s -> new Person(s)).forEach(s-> System.out.println(s));
}
}