Java Stram之“筛选与切片”的简介说明
当我们获取一个Stream流之后,我们可以对其进行筛选与切片,那么筛选与切片有哪些方法呢?下文将一一道来,如下所示:
过滤类中 年龄大于10岁的数据
例:user集合
用于返回集合前指定条数的数据
例:
- filter(Predicate p): 接收 Lambda , 从流中排除某些元素
- distinct(): 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
- limit(long maxSize): 截断流,使其元素不超过给定数量
- skip(long n) :跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流同limit(n)互补
filter(Predicate p)
例:过滤类中 年龄大于10岁的数据
例:user集合
list<User> users = Arrays.asList( new User(101, "user-1", 8), new User(102, "user-2", 18), new User(103, "user-3", 11) ); @Test public void testRun() { users.stream() .filter((e) -> e.getAge() > 10) .forEach(System.out::println); } 注意事项: System.out::println是Java8中方向引用的写法 filter 方法 的作用就是筛选数据
distinct()去重方法
distinct 去重方法,可对对象数据流进行去重操作,如下例所示:package com.java265; import java.util.Arrays; import java.util.List; public class testMain { public static void main(String[] args) { List<Integer> t = Arrays.asList(11, 22, 11, 22, 34, 6, 8); t.stream().distinct().forEach(System.out::println); } } -------运行以上代码,将输出以下信息------- 11 22 34 6 8
limit关键字的功能说明
limit(long maxSize)用于返回集合前指定条数的数据
例:
package com.java265; import java.util.Arrays; import java.util.List; public class testMain { /* * java265.com * 返回符合条件的前2条数据 * */ public static void main(String[] args) { List<Integer> t = Arrays.asList(11, 22, 11, 22, 34, 6, 8); t.stream().distinct().limit(2).forEach(System.out::println); } } -------运行以上代码,将输出以下信息-------- 11 22
skip关键字的功能说明
skip(long n):跳过前多少个数据 例:package com.java265; import java.util.Arrays; import java.util.List; public class testMain { /* * java265.com 跳过前4条数据 */ public static void main(String[] args) { List<Integer> t = Arrays.asList(11, 22, 11, 22, 34, 6, 8); t.stream().skip(4).forEach(System.out::println); } } ------运行以上代码,将输出以下信息---- 34 6 8
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。