小工具      在线工具  汉语词典  css  js  c++  java

Java常规写法与新特性对比详解

# JAVA 高级,# stream,java,开发语言 额外说明

收录于:196天前

✨ ✨ ⭐️ ⭐️

博主 默语带您 Go to New World.
个人主页——
默语 的博客--
《java 面试题大全》
-惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕-
《MYSQL从入门到精通》数据库是开发者必会基础之一~
- 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!-⌨

在这里插入图片描述

简介:
Java是一门广泛应用的编程语言,近年来引入了许多新特性,如Lambda表达式和Stream API等。尽管这些新特性非常流行,但很多开发者仍然对它们使用不够熟练。本文将详细介绍Java的常规写法和新特性的对比,包括示例代码和说明,以帮助您更好地理解和运用这些新特性。

✨1. Lambda表达式对比常规写法:

Lambda表达式是Java 8引入的一项重要特性,它简化了匿名内部类的写法,并提供了一种更简洁、更灵活的函数式编程方式。下面是一些常见的对比示例:

Runnable runnable = new Runnable() {
    
    @Override
    public void run() {
    
        System.out.println("Hello, World!");
    }
};

Lambda表达式示例:

Runnable runnable = () -> System.out.println("Hello, World!");

⭐️1.1 迭代集合:

常规写法:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
for (Integer number : numbers) {
    
    System.out.println(number);
}

Lambda写法:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(number -> System.out.println(number));

⭐️1.2 条件过滤:

常规写法:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = new ArrayList<>();
for (Integer number : numbers) {
    
    if (number % 2 == 0) {
    
        evenNumbers.add(number);
    }
}

Lambda写法:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
                                   .filter(number -> number % 2 == 0)
                                   .collect(Collectors.toList());

⭐️1.3 映射转换:

常规写法:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<Integer> nameLengths = new ArrayList<>();
for (String name : names) {
    
    nameLengths.add(name.length());
}

Lambda写法:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<Integer> nameLengths = names.stream()
                                .map(name -> name.length())
                                .collect(Collectors.toList());

✨2. Stream API对比常规写法:

Stream API是Java 8引入的另一个重要特性,它提供了一种更便捷、更高效的集合操作方式。下面是一些常见的对比示例:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

List<String> filteredNames = new ArrayList<>();
for (String name : names) {
    
    if (name.length() > 4) {
    
        filteredNames.add(name);
    }
}

Stream API示例:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

List<String> filteredNames = names.stream()
    .filter(name -> name.length() > 4)
    .collect(Collectors.toList());

⭐️2.1 过滤和计数:

常规写法:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int count = 0;
for (Integer number : numbers) {
    
    if (number % 2 == 0) {
    
        count++;
    }
}

Stream API写法:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream()
                    .filter(number -> number % 2 == 0)
                    .count();

⭐️2.2 排序:

常规写法:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Collections.sort(names);

Stream API写法:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> sortedNames = names.stream()
                               .sorted()
                               .collect(Collectors.toList());

⭐️2.3 转换为其他数据结构:

常规写法:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Set<String> nameSet = new HashSet<>(names);

Stream API写法:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Set<String> nameSet = names.stream()
                           .collect(Collectors.toSet());

✨3. 方法引用:

方法引用是Java 8中与Lambda表达式相关的一个特性,它可以进一步简化Lambda表达式的写法。方法引用可以直接引用已有的方法,而不需要像Lambda表达式那样编写一个匿名方法。

常规写法示例:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

names.forEach(name -> System.out.println(name));

方法引用示例:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

names.forEach(System.out::println);

✨4. Optional:

Optional是Java 8中引入的一个用于解决空指针异常的类。它可以包装一个可能为null的值,并提供了一些方法来处理这个值。

常规写法示例:

String name = null;
if (name != null) {
    
    System.out.println(name.length());
} else {
    
    System.out.println("Name is null");
}

Optional示例:

Optional<String> name = Optional.ofNullable(null);
name.ifPresentOrElse(
    value -> System.out.println(value.length()),
    () -> System.out.println("Name is null")
);

✨5. 并发编程:

Java提供了多线程的支持,但在Java 8之前,编写多线程代码相对复杂。Java 8引入了一些新的并发编程特性,如并发集合和CompletableFuture,使并发编程更加简单和高效。

常规写法示例:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> doubledNumbers = new ArrayList<>();
for (Integer number : numbers) {
    
    doubledNumbers.add(number * 2);
}

并发编程示例:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> doubledNumbers = numbers.parallelStream()
    .map(number -> number * 2)
    .collect(Collectors.toList());

这些示例涵盖了Lambda表达式、Stream API、方法引用、Optional和并发编程等Java的新特性。

总结:
本文介绍了Java的常规写法和新特性的对比,包括Lambda表达式和Stream API。通过使用这些新特性,可以编写更简洁、更易读的代码,并且能够更高效地处理集合操作。

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进-;(联系微信:Solitudemind )

. . .

相关推荐

额外说明

异常java java.sql.Timestamp cannot be cast to java.lang.String

当字符串: 2021-06-27 18:31:55.0 String s_date = (String)sendRecord.get("send_date"); 改为: Date send_date = (Date)sendRecord.get("sen

额外说明

spring之Spring与消息队列

Spring与消息队列 标题: Spring与消息队列 摘要: 引言: 使用Spring与JMS(Java消息服务) 详细介绍关键字: 1. **JMS(Java消息服务)**: 2. **JmsTemplate**: 3. **@JmsListener

额外说明

Java常规写法与新特性对比详解

Java常规写法与新特性对比详解 ✨1. Lambda表达式对比常规写法: ⭐️1.1 迭代集合: ⭐️1.2 条件过滤: ⭐️1.3 映射转换: ✨2. Stream API对比常规写法: ⭐️2.1 过滤和计数: ⭐️2.2 排序: ⭐️2.3 转换

额外说明

Spring Boot 常用注解和原理,都在这里了!

一、启动注解 @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootC

额外说明

[Eigen中文文档] 概述(总目录)

概述 英文原文链接 这是 Eigen3 的API文档,你可以下载它以便于离线阅读。 以下是该中文文档目录,分为四部分: 入门 对于第一次接触Eigen,学习Eigen最好的方法就是阅读该文档,这可以让你学会如何使用Eigen编写你的代码。 然后,快速参考

额外说明

PHP当中的常量及其声明

常量的特点: 1、使用 define() 函数来定义常量,在 PHP 5.3 以后,也可以使用 const 关键字在类定义之外定义常量。如果常量被定义,就不能再改变或者取消定义。  2、常量只能包含标量数据(boolean,integer,float 和

额外说明

express+react实现上传文件

一、使用express+mongodb搭建后端服务 1、安装依赖包 npm install express # 处理跨域的中间件 npm install cors npm install mongoose # 上传文件的 npm install mul

额外说明

webstorm,idea,goland :格式化代码的快捷键【全网详细】;webstorm,idea,goland :常用的快捷键【全网详细】

文章目录 1. 文章引言 2. 格式化代码 3. 解决快捷键冲突的问题 4. 其他常用的快捷键 1. 文章引言 我们使用webstorm开发前端时,常遇到代码混乱的情况,如下所示: 代码没有缩进 上下代码不换行 标签符号没有空格 … 经过我们格式化后的代

额外说明

Spring Boot 用户管理的例子

当我们使用Spring Boot框架时,它可以自动为我们配置很多非常常用的依赖,其中就包括MyBatis和IOC容器。下面给出一个使用Spring Boot、MyBatis和IOC技术创建用户管理网站的简单示例: 1. 确保在您的系统中已经安装了Mave

额外说明

消息队列概述

什么是消息队列 MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。 为什么使用MQ 在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞

ads via 小工具