当前位置:实例文章 » 其他实例» [文章]Java8实战-总结3

Java8实战-总结3

发布人:shili8 发布时间:2025-01-13 14:24 阅读次数:0

**Java8 实战 - 总结3**

在前两篇文章中,我们已经介绍了 Java8 的一些重要特性,包括 lambda 表达式、方法引用、函数接口等。今天我们将继续讨论 Java8 的其他重要特性,包括 Stream API、Optional 类和日期时间 API。

### **1. Stream API**

Stream API 是 Java8 中的一个非常重要的特性,它允许你以流水线方式处理数据。这意味着你可以使用一系列的操作来处理数据,而不需要一次性将所有数据加载到内存中。

#### **1.1 创建流**

要创建一个流,你可以使用 `Stream.of()` 方法,或者使用 `Arrays.stream()` 或 `Collections.stream()` 方法:

java// 使用 Stream.of() 方法创建流List list = Arrays.asList("a", "b", "c");
Stream stream = Stream.of(list.toArray(new String[0]));

// 使用 Arrays.stream() 方法创建流int[] array = {1,2,3};
Stream stream2 = Arrays.stream(array);

// 使用 Collections.stream() 方法创建流List list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("c");
Stream stream3 = Collections.stream(list2);


#### **1.2 流的操作**

流可以使用一系列的操作来处理数据。这些操作包括:

* `map()`:将流中的元素映射到另一个类型。
* `filter()`:过滤流中的元素,仅保留满足条件的元素。
* `sorted()`:对流中的元素进行排序。
* `distinct()`:去除流中重复的元素。

java// 使用 map() 方法将流中的元素映射到另一个类型List list = Arrays.asList("a", "b", "c");
Stream stream = Stream.of(list.toArray(new String[0]));
stream.map(String::toUpperCase)
 .forEach(System.out::println);

// 使用 filter() 方法过滤流中的元素int[] array = {1,2,3};
Stream stream2 = Arrays.stream(array);
stream2.filter(i -> i >1)
 .forEach(System.out::println);

// 使用 sorted() 方法对流中的元素进行排序List list2 = new ArrayList<>();
list2.add("c");
list2.add("b");
list2.add("a");
Stream stream3 = Collections.stream(list2);
stream3.sorted()
 .forEach(System.out::println);

// 使用 distinct() 方法去除流中重复的元素int[] array2 = {1,2,2,3};
Stream stream4 = Arrays.stream(array2);
stream4.distinct()
 .forEach(System.out::println);


#### **1.3 流的收集**

流可以使用 `collect()` 方法来收集元素。这个方法返回一个集合,包含了流中的所有元素。

java// 使用 collect() 方法收集流中的元素List list = Arrays.asList("a", "b", "c");
Stream stream = Stream.of(list.toArray(new String[0]));
List result = stream.collect(Collectors.toList());
System.out.println(result);

// 使用 collect() 方法收集流中的元素int[] array = {1,2,3};
Stream stream2 = Arrays.stream(array);
List result2 = stream2.collect(Collectors.toList());
System.out.println(result2);


### **2. Optional 类**

Optional 类是 Java8 中的一个重要特性,它允许你以一种更安全的方式处理可能为 null 的值。

#### **2.1 创建 Optional 对象**

要创建一个 Optional 对象,你可以使用 `Optional.of()` 方法,或者使用 `Optional.empty()` 方法:

java// 使用 Optional.of() 方法创建 Optional 对象String str = "Hello";
Optional optional = Optional.of(str);

// 使用 Optional.empty() 方法创建 Optional 对象Optional empty = Optional.empty();


#### **2.2 Optional 的方法**

Optional 对象有以下几个方法:

* `isPresent()`:检查 Optional 对象是否包含值。
* `get()`:获取 Optional 对象中的值。如果 Optional 对象为空,则抛出 NoSuchElementException 异常。
* `orElse()`:如果 Optional 对象不为空,则返回其值;否则,返回指定的默认值。

java// 使用 isPresent() 方法检查 Optional 对象是否包含值String str = "Hello";
Optional optional = Optional.of(str);
System.out.println(optional.isPresent()); // true// 使用 get() 方法获取 Optional 对象中的值int[] array = {1,2,3};
Optional optional2 = Arrays.stream(array).findFirst();
System.out.println(optional2.get());

// 使用 orElse() 方法获取 Optional 对象中的值String str2 = "Hello";
Optional empty = Optional.empty();
System.out.println(empty.orElse("World")); // World


### **3. 日期时间 API**

日期时间 API 是 Java8 中的一个重要特性,它允许你以一种更方便的方式处理日期和时间。

#### **3.1 创建日期对象**

要创建一个日期对象,你可以使用 `LocalDate.now()` 方法,或者使用 `LocalDate.of()` 方法:

java// 使用 LocalDate.now() 方法创建日期对象LocalDate date = LocalDate.now();

// 使用 LocalDate.of() 方法创建日期对象LocalDate date2 = LocalDate.of(2022,1,1);


#### **3.2 日期的方法**

日期对象有以下几个方法:

* `getYear()`:获取年份。
* `getMonth()`:获取月份。
* `getDayOfMonth()`:获取日。

java// 使用 getYear() 方法获取年份LocalDate date = LocalDate.now();
System.out.println(date.getYear()); //2022// 使用 getMonth() 方法获取月份LocalDate date2 = LocalDate.of(2022,1,1);
System.out.println(date2.getMonth()); // JANUARY// 使用 getDayOfMonth() 方法获取日LocalDate date3 = LocalDate.of(2022,1,1);
System.out.println(date3.getDayOfMonth()); //1


#### **3.3 日期的加减**

日期对象可以使用 `plusDays()`、`plusWeeks()`、`plusMonths()` 和 `plusYears()` 方法进行加减:

java// 使用 plusDays() 方法加一天LocalDate date = LocalDate.now();
System.out.println(date.plusDays(1));

// 使用 plusWeeks() 方法加一周LocalDate date2 = LocalDate.of(2022,1,1);
System.out.println(date2.plusWeeks(1));

// 使用 plusMonths() 方法加一个月LocalDate date3 = LocalDate.of(2022,1,1);
System.out.println(date3.plusMonths(1));

// 使用 plusYears() 方法加一年LocalDate date4 = LocalDate.of(2022,1,1);
System.out.println(date4.plusYears(1));


#### **3.4 日期的比较**

日期对象可以使用 `isAfter()`、`isBefore()` 和 `isEqual()` 方法进行比较:

java// 使用 isAfter() 方法比较两个日期LocalDate date = LocalDate.now();
LocalDate date2 = LocalDate.of(2022,1,1);
System.out.println(date.isAfter(date2)); // true// 使用 isBefore() 方法比较两个日期LocalDate date3 = LocalDate.of(2022,1,1);
LocalDate date4 = LocalDate.now();
System.out.println(date3.isBefore(date4)); // true// 使用 isEqual() 方法比较两个日期LocalDate date5 = LocalDate.of(2022,1,1);
LocalDate date6 = LocalDate.of(2022,1,1);
System.out.println(date5.isEqual(date6)); // true


### **总结**

Java8 的 Stream API、Optional 类和日期时间 API 是 Java8 中非常重要的特性。它们允许你以一种更安全的方式处理可能为 null 的值, 以一种更方便的方式处理日期和时间。这些特性可以帮助你编写更加高效和安全的代码。

### **参考**

* [Java8 Stream API]( />* [Java8 Optional 类]( />* [Java8 日期时间 API](

相关标签:java
其他信息

其他资源

Top