2021-2-2
1.Strem流(介绍)
2.Strem流的获取方法
package com.wc.MapDemo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.stream.Stream;
/**
* @author wc
* @Date: 2021/02/02/14:47
*/
public class StreamDemo {
public static void main(String[] args) {
//单列集合
//mehtod1();
//双列集合
//mehtod2();
//数组
//mehtod3();
//同种类型的多个数据
mehtod4();
}
private static void mehtod4() {
//s表示流中的每一个数据
Stream.of(1,2,3,4).forEach(s-> System.out.println(s));
}
private static void mehtod3() {
int [] arr={
1,23,4,5,6};
//s表示流中的每一个数据
Arrays.stream(arr).forEach(s -> System.out.println(s));
}
private static void mehtod2() {
HashMap<String, Integer> hm=new HashMap<>();
hm.put("张三",12);
hm.put("李四",13);
hm.put("王五",14);
hm.put("赵柳",15);
//s表示流中的每一个数据
hm.entrySet().stream().forEach(s -> System.out.println(s));
}
private static void mehtod1() {
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
//s表示流中的每一个数据
arrayList.stream().forEach(s -> System.out.println(s));
}
}
3.Strem流的常见中间操作方法(filter、limit、skip、concat)
package com.wc.MapDemo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.function.Predicate;
import java.util.stream.Stream;
/**
* @author wc
* @Date: 2021/02/02/14:47
*/
public class StreamDemo1 {
public static void main(String[] args) {
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("张三");
arrayList.add("张三丰");
arrayList.add("张玲");
arrayList.add("王五");
arrayList.add("赵六");
//filter方法获取流中的每一个数据
//test中的s,表示流中的每一个数据
//对test中的s进行判断
//如果判断结果为true,则当前数据留下
//如果判断结果为false,则当前数据不要
arrayList.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
boolean result = s.startsWith("张");
return result;
}
}).forEach(s -> System.out.println(s));
System.out.println("=================================");
//匿名内部类方法可用lambda表达式来表示
arrayList.stream().filter((String s)->{
boolean result = s.startsWith("张");
return result;
}).forEach(s -> System.out.println(s));
System.out.println("=================================");
arrayList.stream().filter(s->s.startsWith("张")).forEach(s -> System.out.println(s));
}
}
package com.wc.MapDemo;
import java.util.ArrayList;
import java.util.function.Predicate;
import java.util.stream.Stream;
/**
* @author wc
* @Date: 2021/02/02/14:47
*/
public class StreamDemo2 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("赵六");
list.add("赵六");
//截取指定参数的个数
list.stream().limit(2).forEach(s-> System.out.println(s));
//跳过指定参数个数的数据
list.stream().skip(2).forEach(s-> System.out.println(s));
//合并a和b两个流
ArrayList<String> list1=new ArrayList<>();
list1.add("张三");
list1.add("李四");
list1.add("王五");
list1.add("赵六");
Stream.concat(list.stream(),list1.stream()).forEach(s-> System.out.println(s));
//去除重复元素
list.stream().distinct().forEach(s-> System.out.println(s));
}
}
4.Strem流的常见终结操作方法
package com.wc.MapDemo;
import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.stream.Stream;
/**
* @author wc
* @Date: 2021/02/02/14:47
*/
public class StreamDemo3 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.stream().forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
System.out.println("=========================");
list.stream().forEach(s -> System.out.println(s));
}
}
5.Stream流操作案例
package com.wc.MapDemo;
import java.util.ArrayList;
import java.util.List;
/**
* @author wc
* @Date: 2021/02/02/14:47
*/
public class StreamDemo3 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
list.stream().filter(
(Integer i) -> {
return i % 2 == 0;
}).forEach(s -> System.out.println(s));
System.out.println("==================");
for (Integer integer : list) {
System.out.println(integer);
}
}
6.Stream流的收集操作
package com.wc.StreamController;
import java.util.ArrayList;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author wc
* @Date: 2021/02/18/11:03
*/
public class Pstream {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("zhangsan,23");
list.add("lisi,24");
list.add("wangwu,25");
//保留年龄大于24的人
Map<String, Integer> map=list.stream().filter(
s -> {
//通过逗号分割得到两个字符串
String[] split = s.split(",");
//年龄在1索引的位置,是一个int类型的数字,将字符串转为int类型
int age = Integer.parseInt(split[1]);
return age >= 24;
}
).collect(Collectors.toMap(
(String s)->{
return s.split(",")[0];
},
(String s)->{
//年龄为Integer类型的,需要将字符串转化为int类型的
return Integer.parseInt(s.split(",")[1]);
}
));
System.out.println(map);
}
}
7.Stream流的练习
package com.wc.StreamController;
import java.util.ArrayList;
import java.util.stream.Stream;
/**
* @author wc
* @Date: 2021/02/18/15:07
*/
public class MyStream {
public static void main(String[] args) {
ArrayList<String> manList = new ArrayList<String>();
manList.add("张国立");
manList.add("张晋");
manList.add("刘烨");
manList.add("郑伊健");
manList.add("徐峥");
manList.add("王宝强");
ArrayList<String> womanList = new ArrayList<String>();
womanList.add("郑爽");
womanList.add("杨紫");
womanList.add("关晓彤");
womanList.add("张天爱");
womanList.add("杨幂");
womanList.add("赵丽因");
Stream<String> stream = manList.stream().filter(name -> name.length() == 3).limit(2);
Stream<String> stream1 = womanList.stream().filter(name -> name.contains("杨")).skip(1);
Stream.concat(stream, stream1).forEach(name->{
Actor actor=new Actor(name);
System.out.println(actor);
});
}
}