package com.pd.kill.test;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamTest {
public static void main(String args[]){
String[] arrays={"a","b","c","d","e","a"};
List<String> list= Arrays.asList(arrays);
// 过滤重复元素, 根据equals()来判断
Stream<String> distinct = list.stream().distinct();
distinct.forEach(dis -> System.out.println(dis));
// filter中为true的元素会保留
List<String> collect = list.stream().filter(arr -> "a".equals(arr)).collect(Collectors.toList());
System.out.println(collect);//[a, a]
// 只保留filter中返回true的元素
List<String> collect1 = list.stream().filter(arr -> {
if ("a".equals(arr)) {
return false;
}
return true;
}).collect(Collectors.toList());
System.out.println(collect1);//[b, c, d, e]
// 返回列表前几位,超出则返回所有,小于0则报错
List<String> collect2 = list.stream().limit(2).collect(Collectors.toList());
System.out.println(collect2);//[a, b]
// 返回循环后的数据或调类的方法
List<String> collect3 = list.stream().map(arr -> arr + "&").collect(Collectors.toList());
System.out.println(collect3);//[a&, b&, c&, d&, e&, a&]
List<String> collect4 = list.stream().map(String::toString).collect(Collectors.toList());
System.out.println(collect4);//[a, b, c, d, e, a]
List<String> collect5 = list.stream().map(arr -> {
System.out.print("占位符 ");
return arr.concat("*");
}).collect(Collectors.toList());
System.out.println(collect5);//[a*, b*, c*, d*, e*, a*]
String[] arrays2={"aa","bb","cc","dd","ee","aa"};
list= Arrays.asList(arrays2);
// flatMap
List<String> collect6 = list.stream().flatMap(arr -> Arrays.stream(arr.split(""))).collect(Collectors.toList());
System.out.println(collect6);//[a, a, b, b, c, c, d, d, e, e, a, a]
// flatMap2
List<String> collect7 = list.stream().map(arr -> arr.split("")).flatMap(Arrays::stream).collect(Collectors.toList());
System.out.println(collect7);//[a, a, b, b, c, c, d, d, e, e, a, a]
// 检测是否全都满足条件
boolean flag = list.stream().allMatch(arr -> arr.length() > 1);
System.out.println(flag);
// 检测是否有一个满足条件
boolean flag2 = list.stream().anyMatch(arr -> arr.length() > 1);
System.out.println(flag2);
// 检测是否存在不满足条件的元素
boolean flag3 = list.stream().noneMatch(arr -> arr.length() > 1);
System.out.println(flag3);
// 返回指定类型
TreeSet<String> collect8 = list.stream().collect(Collectors.toCollection(TreeSet::new));
System.out.println(collect8);//[aa, bb, cc, dd, ee]
// 返回分组类型, 等待场景
Map<Boolean, List<String>> collect9 = list.stream().collect(Collectors.groupingBy(arr -> "aa".equals(arr)));
System.out.println(collect9);//{false=[bb, cc, dd, ee], true=[aa, aa]}
// 根据分割符及样式返回字符串 delimiter,prefix,suffix
String collect10 = list.stream().collect(Collectors.joining(",", "{", "}"));
System.out.println(collect10);
}
// public int fun(int x){
// return x -> 2*x;
// }
}
JDK8-Stream
最新推荐文章于 2024-07-07 20:33:00 发布