关于后端:这些Stream流的常用方法你得记住步骤简单不麻烦

5次阅读

共计 2686 个字符,预计需要花费 7 分钟才能阅读完成。

forEach 遍历

/*
forEach: 该办法接管一个 Consumer 接口函数,将每一个流元素交给该函数解决
简略记:
forEach 办法:用来遍历流中的数据
是一个终结办法,遍历之后就不能持续调用 Stream 流中的其余办法
*/

public class demo01Stream_ForEach {public static void main(String[] args) {
    // 获取一个 Stream 流
Stream<String>stream= Stream.of("张三","李四","王五","赵六");
// 应用 Stream 流的办法 forEach 对 stream 流中的数据遍历
    stream.forEach((String name)->{System.out.println(name);
    });
}
}

filter 过滤

/*
filter:用于对 Stream 流中的数据进行过滤
filter(Predicate<? super T>predicate)
filter 办法的参数 Predicate 是一个函数式接口,能够应用 lambda 表达式
Predicate 中的形象办法
boolean test(T t)
*/

public class demo01Stream_filter {public static void main(String[] args) {
    // 创立一个 Stream 流
    Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "冯老七");
    Stream<String> stream1 = stream.filter((String name) -> {return name.startsWith("冯");
    });
    // 遍历 stream1
    stream1.forEach((name)-> System.out.println(name));
}
}

*Stream 流属于管道流,只能被生产一次
第一个 Stream 流调用结束办法,数据会流转到下一个流中
第一个流会敞开,不再被调用 *

map 办法转换流

/*
将流中的元素映射到另一个流中,应用 map 办法
该接口须要一个 Function 函数式接口参数,能够将以后流中的 T 类型数据转换为另一种 R 类型的流
Function 中的形象办法:
R apply(T t)
*/

public class demoStream_map {public static void main(String[] args) {
    // 获取一个 String 类型的 stream 流
    Stream<String>stream = Stream.of("1","2","3","4");
    // 应用 map 办法,把字符串类型的整数,转换(映射)为 Integer 类型的整数
    Stream<Integer> stream1 = stream.map((String s) -> {return Integer.parseInt(s);
    });
    stream1.forEach((i)-> System.out.println(i));
}
}

count 办法 统计个数

/*
count 办法 用于统计 Stream 流中的元素个数
long count();
count 办法是一个终结办法,返回值是一个 long 类型的整数
不能再调用 Stream 流其余办法
*/

public class demoStream_count {public static void main(String[] args) {ArrayList<Integer> list= new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    Stream<Integer> stream = list.stream();
    long count = stream.count();
    System.out.println(count);
}
}

limit 截取元素

/*
limit: 用于截取流中的元素
limit 能够对流进行截取,只取用前 n 个
limit(long maxSize);
参数是一个 long 型,如果汇合以后长度大于参数则进行截取,否则不进行操作
limit 是一个提早办法,能够持续应用 Stream 流办法
*/

public class demoStream_limit {public static void main(String[] args) {String[] arr= {"xxx","wwq","wqew","wewqewqe"};
    Stream<String> stream = Stream.of(arr);
    Stream<String> stream1 = stream.limit(2);
    stream1.forEach((name)-> System.out.println(name));
}
}

skip 办法跳过元素

/*
skip 办法:用于跳过元素
skip(long n)
如果流的以后长度大于 n,则跳过前 n 个,否则将会失去一个长度为 0 的空流
*/

public class demoStream_skip {public static void main(String[] args) {String[] arr= {"xxx","wwq","wqew","wewqewqe"};
    Stream<String> stream = Stream.of(arr);
    Stream<String> stream1 = stream.skip(2);
    stream1.forEach((name)-> System.out.println(name));
}
}

concat 办法合并流

/*
concat: 用于把流组合到一起
如果有两个流,心愿合并成为一个流,能够应用 Stream 接口的静态方法 concat

*/

public class demoStream_concat {public static void main(String[] args) {Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "冯老七");
    String[] arr= {"QWQ", "ERE", "TYT", "UIU", "OIO"};
    Stream<String> stream1 = Stream.of(arr);
    // 合并
    Stream<String> stream2 = Stream.concat(stream, stream1);
    stream2.forEach((name)-> System.out.print(name+" "));
}
}

最初

欢送关注公众号:前程有光,支付一线大厂 Java 面试题总结 + 各知识点学习思维导 + 一份 300 页 pdf 文档的 Java 外围知识点总结!

正文完
 0