Java常规写法与新特性对比详解
- ✨1. Lambda表达式对比常规写法:
- ⭐️1.1 迭代集合:
- ⭐️1.2 条件过滤:
- ⭐️1.3 映射转换:
- ✨2. Stream API对比常规写法:
- ⭐️2.1 过滤和计数:
- ⭐️2.2 排序:
- ⭐️2.3 转换为其他数据结构:
- ✨3. 方法引用:
- ✨4. Optional:
- ✨5. 并发编程:
✨ ✨ ⭐️ ⭐️
博主 默语带您 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 )