Java stream常用方法
Java Stream 是 JDK8 中提供的一个用于处理集合数据的 API,它可以让我们以声明式的方式对集合进行过滤、转换和聚合操作。常用的 Java Stream 方法包括:
filter:根据指定的条件过滤集合中的元素,返回一个新的 Stream。
map:将集合中的每个元素映射为另一个元素,返回一个新的 Stream。
flatMap:将一个 Stream 中的每个元素转换为一个 Stream,然后将这些 Stream 合并为一个 Stream。
distinct:去重,返回一个新的 Stream。
sorted:根据指定的比较器对元素进行排序,返回一个新的 Stream。
limit:截取前 n 个元素,返回一个新的 Stream。
skip:跳过前 n 个元素,返回一个新的 Stream。
reduce:将 Stream 中的所有元素按照指定的方式聚合成一个值,返回这个值。
collect:将 Stream 中的元素收集到一个容器中,返回这个容器。
forEach:遍历 Stream 中的每个元素。
除此之外,还有一些常用的终止操作方法,比如 count、max、min、anyMatch、allMatch、noneMatch、findAny 和 findFirst 等,它们可以对 Stream 进行终止操作并返回一个结果。
filter:根据指定的条件过滤集合中的元素,返回一个新的 Stream。
map:将集合中的每个元素映射为另一个元素,返回一个新的 Stream。
flatMap:将一个 Stream 中的每个元素转换为一个 Stream,然后将这些 Stream 合并为一个 Stream。
distinct:去重,返回一个新的 Stream。
sorted:根据指定的比较器对元素进行排序,返回一个新的 Stream。
limit:截取前 n 个元素,返回一个新的 Stream。
skip:跳过前 n 个元素,返回一个新的 Stream。
reduce:将 Stream 中的所有元素按照指定的方式聚合成一个值,返回这个值。
collect:将 Stream 中的元素收集到一个容器中,返回这个容器。
forEach:遍历 Stream 中的每个元素。
除此之外,还有一些常用的终止操作方法,比如 count、max、min、anyMatch、allMatch、noneMatch、findAny 和 findFirst 等,它们可以对 Stream 进行终止操作并返回一个结果。
全部评论
这里使用的是 mapToInt 而不是 map,是因为在这个示例中我们需要将 Stream 中的元素转换为 int 类型,而 map 方法只能将元素转换为对象类型,无法直接转换为基本数据类型。因此,我们需要使用 mapToInt 方法来将元素转换为 int 类型。
在 Java Stream 中,可以使用 mapToXXX 方法将对象转换成基本数据类型。其中,XXX 可以是 Int、Long 或 Double,分别表示转换为 int、long 或 double 基本数据类型。
List<String> names = students.stream().map(Student::getName).collect(Collectors.toList());
对于其他类型的数组(比如对象数组),只有 arr.stream() 方法可以将其转换为 Stream 对象,而 Arrays.stream(arr) 方法则不适用。
Collectors 是 Java 8 中提供的一个工具类,它提供了很多常用的收集器(Collector),可以方便地对 Stream 进行各种集合操作。它可以将 Stream 中的元素转换成一个集合或者聚合成一个值,还可以将元素分组、分区等。
一些常用的 Collectors 方法包括:
toList:将 Stream 转换成 List。
toSet:将 Stream 转换成 Set。
toMap:将 Stream 转换成 Map。
joining:将 Stream 中的元素用指定的分隔符连接成一个字符串。
counting:统计 Stream 中元素的个数。
averagingInt/Double/Long:计算 Stream 中元素的平均值。
maxBy/minBy:查找 Stream 中的最大值/最小值。
groupingBy:将 Stream 中的元素按照指定的条件分组。
partitioningBy:将 Stream 中的元素按照指定的条件分区。
这些方法都是静态方法,可以直接通过 Collectors 类进行调用。当我们需要将 Stream 中的元素聚合成一个值或者转换成一个集合时,可以使用这些方法。
String[] strArray = {"apple", "banana", "orange", "banana", "kiwi", "apple"};
String[] distinctArray = Arrays.stream(strArray).distinct().toArray(String[]::new);
数组去重
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享