如何用Java Stream写出既高雅又装*的代码

如何用Java Stream写出既高雅又装*的代码?

Java Stream可以被用来解决很多问题,从简单的过滤到复杂的组合操作。它极大地减少了编写的代码量,提高了代码的可读性、可维护性和可重用性。

下面是一些使用Java Stream的技巧,可以让你写出高雅又装*的代码。

1. 使用Lambda表达式写过滤器

传统的Java代码需要明确指定每一步操作的细节,使用Java Stream,可以通过Lambda表达式只表达必要的信息,更加简洁明了。

以下是一个传统的过滤字符串数组中长度为3的字符串的实现:

String[] arr = new String[] { "apple", "pear", "banana", "watermelon" };
List<String> result = new ArrayList<>();
for (String s : arr) {
    if (s.length() == 3) {
        result.add(s);
    }
}

使用Java Stream进行改写:

String[] arr = new String[] { "apple", "pear", "banana", "watermelon" };
List<String> result = Arrays.stream(arr)
                            .filter(s -> s.length() == 3)
                            .collect(Collectors.toList());

代码使用Stream的filter操作符进行过滤,只会保留长度为3的字符串。

2. 使用collectors统计结果

在使用Java Stream对集合进行处理过程中,一般需要统计某个元素的个数,使用collectors可以非常方便地对结果进行统计。比如对一个字符串数组进行统计出不同长度字符串的个数。

以下是一个统计不同长度字符串在数组中出现次数的传统实现:

String[] arr = new String[] { "apple", "pear", "banana", "watermelon" };
Map<Integer, Integer> countMap = new LinkedHashMap<>(); //有序HashMap
for (String s : arr) {
    int count = countMap.getOrDefault(s.length(), 0);
    countMap.put(s.length(), count + 1);
}

使用Java Stream来实现:

String[] arr = new String[] { "apple", "pear", "banana", "watermelon" };
Map<Integer, Long> countMap = Arrays.stream(arr)
                                    .collect(Collectors.groupingBy(String::length, Collectors.counting()));

代码使用了collectors中的groupby操作,对字符串数组按长度进行分组,并统计每个长度个数的个数。这样代码可以更加高效且简洁。

除此之外,Java Stream还有很多有用的操作符,可以提高代码的可读性和效率,使用这些操作符可以使你写出既高雅又装*的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用Java Stream写出既高雅又装*的代码 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java面试题冲刺第二十七天–JVM2

    Java面试题冲刺第二十七天–JVM2 1. 内存模型 Java内存模型主要分为两种: 堆内存:存放我们new出来的对象以及数组等,这部分内存可以动态申请或释放。一般情况下,堆内存比较大。 栈内存:存放基本类型的变量以及对象的引用变量(指针),这些变量会随着程序的运行而申请或释放。栈的空间比较小,一般情况下,栈的大小是在程序启动的时候就固定下来。 2. J…

    Java 2023年5月19日
    00
  • 猜你不知道Spring Boot的几种部署方式(小结)

    下面将为您详细介绍“猜你不知道SpringBoot的几种部署方式(小结)”这篇文章的完整攻略。 简介 在这篇文章中,我们将会介绍SpringBoot的几种部署方式,包括: 傻瓜式部署 War包部署 Jar包部署 我们将详细讲解每种部署方式的具体实现步骤以及使用场景,帮助读者更好地理解和应用SpringBoot的部署方式。 傻瓜式部署 傻瓜式部署是最简单的一种…

    Java 2023年5月15日
    00
  • 完整java开发中JDBC连接数据库代码和步骤

    当进行Java开发中需要连接数据库进行数据操作时,我们可以使用JDBC来完成这个任务。下面详细介绍完整的JDBC连接数据库代码和步骤,这里以MySQL数据库和Oracle数据库为例。 JDBC连接MySQL数据库 步骤一:导入JDBC驱动 要连接MySQL数据库,我们需要使用MySQL JDBC驱动程序。将JDBC驱动程序的JAR文件添加到classpath…

    Java 2023年5月19日
    00
  • 10k+点赞的 SpringBoot 后台管理系统教程详解

    首先我们需要明确一下什么是SpringBoot后台管理系统。SpringBoot是一个Java开发框架,它能够帮助开发者快速搭建一个Java Web应用程序,尤其适用于后台管理系统的开发。而SpringBoot后台管理系统,就是指采用SpringBoot框架开发的一个管理后台,用于管理数据和业务逻辑。 接下来,我将详细讲解如何制作一个10k+点赞的Sprin…

    Java 2023年5月15日
    00
  • java算法Leecode刷题统计有序矩阵中的负数

    Java算法Leetcode刷题是大多数Java程序员在提高自己的算法能力时所选择的途径之一。其中,《有序矩阵中的负数》是一道常见的算法题目。下面我将给出一份完整攻略,以便Java程序员能够更好地掌握这道题目。 题目描述 给定一个m*n的矩阵grid,其中每行和每列均已按非递增顺序排好序,请你统计并返回grid中 负数 的个数。 解题思路 因为矩阵已按照非递…

    Java 2023年5月19日
    00
  • java实现二维数组转json的方法示例

    下面是详细讲解“java实现二维数组转json的方法示例”的完整攻略: 1. 什么是JSON 首先,我们需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写,也易于机器解析和生成。它以键值对的形式对数据进行描述,是一种简洁但非常实用的数据表示形式。 2. 如何实现二维数组转JS…

    Java 2023年5月26日
    00
  • SpringData JPA基本/高级/多数据源的使用详解

    SpringData JPA基本/高级/多数据源的使用详解 简介 SpringData JPA是Spring框架下的数据访问层框架,它有很多特点:自定义查询方式、事务管理、动态查询语句生成、性能优化等。在本篇文章中,我们将会深入介绍SpringData JPA的基本用法、高级用法以及多数据源的使用详解。 基本用法 1. 实体类定义 在使用SpringData…

    Java 2023年6月2日
    00
  • Spring Cloud Data Flow初体验以Local模式运行

    以下是“Spring Cloud Data Flow初体验以Local模式运行”的完整攻略。 准备工作 首先需要创建一个Spring Boot项目,并添加如下依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> …

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部