public class StreamTest {
private static ArrayList<String> arrayList;
public static void main(String[] args) {
arrayList = new ArrayList<String>();
arrayList.add("aaaa");
arrayList.add("bbbb");
arrayList.add("caccc");
arrayList.add("dddd");
arrayList.add("eeeae");
arrayList.add("afff");
arrayList.add("agggg");
test1();
System.out.println("=================");
test2();
System.out.println("=================");
System.out.println("=================");
test4();
System.out.println("=================");
test5();
System.out.println("=================");
test6();
System.out.println("=================");
test7();
}
/**
* 过滤 顾名思义 将返回为true的留下,剩下的过滤掉
* filter接口
*/
public static void test1(){
arrayList
.stream()
.filter((s) -> s.startsWith("a")) //判断prefix 开头是否为a 这里面是个断言型接口 @return the new stream
.forEach(System.out::println);
}
/**
* sorted 排序
*/
public static void test2(){
arrayList
.stream()
.sorted() // 走的comparable 接口
//判断prefix 开头是否为a 这里面是个断言型接口
.forEach(System.out::println);
}
/**
* map 走的是 Function<T, R> 接口
* 返回依旧是个流
*/
public static void test4(){
arrayList
.stream()
.map(String::toUpperCase)
.forEach(s -> System.out.println(s));
}
// match 进行匹配选择判断这一组流中 第一个是否满足条件 返回类型为 boolean
/**
* Match参数
* anyMatch
* noneMatch
* allMatch
*/
public static void test5(){
// anyMatch:验证 list 中 string 是否有以 a 开头的, 匹配到第一个,即返回 true
boolean m = arrayList
.stream()
.anyMatch((s) -> s.startsWith("a"));
System.out.println(m);
}
/**
* 终端操作
* 统计stream流中的元素总数,返回类型long
*
*/
public static void test6(){
long count = arrayList
.stream()
.filter(s -> s.startsWith("a"))
.count();
System.out.println(count);
}
/**
* 终端操作
* 统计stream流中的元素总数,返回类型long
*
*/
public static void test7(){
Optional<String> reduce = arrayList
.stream()
.sorted() //先排序 后 归约
.reduce((s1, s2) -> s1 + "@" + s2);
reduce.ifPresent(System.out::println);
}
}
java8新特性stream流处理
最新推荐文章于 2024-10-16 16:34:42 发布