# Stream 流中间操作方法
概念:
中间操作的意思是,执行完此方法之后,Stream 流依然可以继续执行其他操作
常见方法:
方法名 | 说明 |
---|
Stream<T> filter(Predicate predicate) | 用于对流中的数据进行过滤 |
Stream<T> limit(Long maxSize) | 返回此流中的元素组成的流,截取前指定参数个数的数据 |
Stream<T> skip(Long n) | 跳过指定参数个数的数据,返回由该流的剩余元素组成的流 |
static<T> Stream<T> concat(Stream a,Stream b) | 合并 a 和 b 两个流为一个流 |
Stream<T> distinct() | 返回由该流的不同元素 (根据 Object.equals (Object)) 组成的流 |
# filter 操作演示
| public class MyStream3 { |
| 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().filter(s ->s.startsWith("张")).forEach(s-> System.out.println(s)); |
| } |
| } |
# limit&skip 代码演示
| public class StreamDemo02 { |
| public static void main(String[] args) { |
| |
| ArrayList<String> list = new ArrayList<String>(); |
| |
| list.add("林青霞"); |
| list.add("张曼玉"); |
| list.add("王祖贤"); |
| list.add("柳岩"); |
| list.add("张敏"); |
| list.add("张无忌"); |
| |
| |
| list.stream().limit(3).forEach(s-> System.out.println(s)); |
| System.out.println("--------"); |
| |
| |
| list.stream().skip(3).forEach(s-> System.out.println(s)); |
| System.out.println("--------"); |
| |
| |
| list.stream().skip(2).limit(2).forEach(s-> System.out.println(s)); |
| } |
| } |
# concat&distinct 代码演示
| public class StreamDemo03 { |
| public static void main(String[] args) { |
| |
| ArrayList<String> list = new ArrayList<String>(); |
| |
| list.add("林青霞"); |
| list.add("张曼玉"); |
| list.add("王祖贤"); |
| list.add("柳岩"); |
| list.add("张敏"); |
| list.add("张无忌"); |
| |
| |
| Stream<String> s1 = list.stream().limit(4); |
| |
| |
| Stream<String> s2 = list.stream().skip(2); |
| |
| |
| |
| |
| |
| Stream.concat(s1,s2).distinct().forEach(s-> System.out.println(s)); |
| } |
| } |