练习一:
package Day03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class StreamPractice01 {
public static void main(String[] args) {
//定义一个集合,存储整数1,2,3,4,5,6,7,8,9,10
//过滤掉奇数,只保留偶数
//并把结果存起来
ArrayList<Integer> list=new ArrayList<>();
Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);
//Stream流
List<Integer> collect = list.stream()
.filter(s -> s % 2 == 0)
.collect(Collectors.toList());
System.out.println(collect);
}
}
练习二:

package Day03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamPractice02 {
public static void main(String[] args) {
//
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"zhangsan,23","lisi,24","wangwu,25");
Map<String, Integer> collect = 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(collect);
}
}

package Day03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamPractice03 {
public static void main(String[] args) {
//创建一个男演员的集合
ArrayList<Actor> actorMan = new ArrayList<>();
//创建一个女演员的集合
ArrayList<Actor> actorWoman = new ArrayList<>();
Collections.addAll(actorMan,new Actor("刘昊然",21),
new Actor("张成",22),
new Actor("侯昊",23),
new Actor("王安宇",24),
new Actor("林一",25),
new Actor("王鹤棣",26));
Collections.addAll(actorWoman,new Actor("赵丽颖",21),
new Actor("杨幂",22),
new Actor("迪丽热巴",23),
new Actor("杨澜",24),
new Actor("杨紫",25),
new Actor("赵露思",26));
//1、男演员只要名字为3个字的前面两个人
List<Actor> listMan = actorMan.stream()
.filter(s -> s.getName().length() == 3)
.limit(2)
.collect(Collectors.toList());
//2、女演员只要姓杨,并且不要第一个
List<Actor> listWoman = actorWoman.stream()
.filter(s -> s.getName().startsWith("杨"))
.skip(1)
.collect(Collectors.toList());
//这样分开会代码更清晰一点
// Stream.concat(listMan.stream(),listWoman.stream())
// .forEach(s-> System.out.println(s.getName()+","+s.getAge()));
//当然也可以整在一起,就是天书
Stream.concat(actorMan.stream()
.filter(s -> s.getName().length() == 3)
.limit(2),
actorWoman.stream()
.filter(s -> s.getName().startsWith("杨"))
.skip(1))
.forEach(s -> System.out.println(s.getName()+" "+s.getAge()));
}
}
上面是理解错题目的意思了,正确的是下面
package Day03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamPractice03 {
public static void main(String[] args) {
//创建一个男演员的集合
ArrayList<String> actorMan = new ArrayList<>();
//创建一个女演员的集合
ArrayList<String> actorWoman = new ArrayList<>();
Collections.addAll(actorMan,"刘昊然,22","张成,22","侯昊,23","王安宇,24","林一,25","王鹤棣,26");
Collections.addAll(actorWoman,"赵丽颖,21","杨幂,22","迪丽热巴,23","杨澜,24","杨紫,25","赵露思,26");
//1、男演员只要名字为3个字的前面两个人
actorMan.stream()
.filter(s->s.split(",")[0].length()==3)
.limit(2);
//2、女演员只要姓杨,并且不要第一个
actorWoman.stream()
.filter(s->s.startsWith("杨"))
.skip(1);
//3、把过滤后的男女演员合在一起
Stream.concat(
actorMan.stream()
.filter(s->s.split(",")[0].length()==3)
.limit(2),
actorWoman.stream()
.filter(s->s.startsWith("杨"))
.skip(1));
//.forEach(s-> System.out.println(s));
//4、把上面一步的数据封装成一个Actor对象
//类型转化用Map
Stream.concat(
actorMan.stream()
.filter(s->s.split(",")[0].length()==3)
.limit(2),
actorWoman.stream()
.filter(s->s.startsWith("杨"))
.skip(1))
.map(s->new Actor(s.split(",")[0],Integer.parseInt(s.split(",")[1])));
//.forEach(s-> System.out.println(s));
//5、把上面的再放到list集合中
List<Actor> list = Stream.concat(
actorMan.stream()
.filter(s -> s.split(",")[0].length()==3)
.limit(2),
actorWoman.stream()
.filter(s -> s.startsWith("杨"))
.skip(1))
.map(s -> new Actor(s.split(",")[0], Integer.parseInt(s.split(",")[1])))
.collect(Collectors.toList());
System.out.println(list);
}
}
从上面可以看出,一步步之后,stream就会变的越来越复杂