java8 之后的新特性
时间: 2023-11-24 12:46:47 浏览: 31
Java 8 引入了很多新的特性,其中一些最重要的特性如下:
1. Lambda 表达式:通过 Lambda 表达式,可以将函数作为方法的参数进行传递。
2. 方法引用:通过方法引用,可以直接引用已有 Java 类库中的方法,或者用户自定义的方法。
3. 接口的默认方法:接口中可以定义默认方法,从而避免了实现类必须全部实现接口中的所有方法的问题。
4. Stream API:Stream API 可以方便地对集合(Collection)进行操作和处理,例如筛选、排序、过滤等等。
5. 新的时间日期 API:Java 8 新增了 java.time 包,提供了全新的时间日期 API,比以前更加易用。
相关问题
java8新特性LocalDateTime字符串转时间比较大小(5)
要比较两个LocalDateTime类型的字符串大小,我们可以先将它们转换为LocalDateTime对象,然后使用compareTo方法进行比较。示例如下:
```java
String str1 = "2021-01-01 12:00:00";
String str2 = "2021-02-01 12:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime1 = LocalDateTime.parse(str1, formatter);
LocalDateTime dateTime2 = LocalDateTime.parse(str2, formatter);
if(dateTime1.compareTo(dateTime2) < 0) {
System.out.println(str1 + " 在 " + str2 + " 之前");
} else if(dateTime1.compareTo(dateTime2) > 0) {
System.out.println(str1 + " 在 " + str2 + " 之后");
} else {
System.out.println(str1 + " 和 " + str2 + " 相等");
}
```
在上面的示例中,我们首先定义了两个LocalDateTime类型的字符串,然后定义了一个DateTimeFormatter对象,用于将字符串转换为LocalDateTime对象。接着,我们使用parse方法将字符串转换为LocalDateTime对象,并使用compareTo方法进行比较。最后,根据比较结果输出不同的信息。
java8新特性将list中按指定属性排序过滤重复数据的方法
Java8新增了一个非常方便的方法java.util.stream.Stream,它为我们提供了一些非常有用的方法来对集合进行操作。List集合中按指定属性排序并过滤重复数据也可以通过Stream来实现。
首先,我们需要实现一个Comparator接口,该接口的作用是根据指定的属性来对List集合进行排序。Comparator接口中定义了一个compare方法,我们需要重写该方法并根据自己的需要来实现排序功能。
在排序完成之后,我们还需要使用Stream.distinct()方法来过滤重复的数据,该方法能够将重复的数据过滤掉,只留下不同的数据。
下面是一个示例代码:
```
public class Main {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 25));
persons.add(new Person("John", 30));
persons.add(new Person("Peter", 25));
persons.add(new Person("Tom", 28));
persons.add(new Person("Peter", 25));
List<Person> result = persons.stream()
.sorted((p1, p2) -> p1.getName().compareTo(p2.getName()))
.distinct()
.collect(Collectors.toList());
System.out.println(result);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
以上代码中,我们先创建了一个Person类,用于存储人员信息,然后创建了一个List集合persons,该集合包含了五个Person对象。接着,我们使用Stream来对该集合进行排序和去重操作,并将结果存入到一个新的List集合中。
在排序操作中,我们使用了一个Lambda表达式来实现对Person对象按照姓名属性进行排序。在去重操作中,我们直接使用了Stream.distinct()来实现。
最终,我们打印出了排序并去重之后的List集合中的内容,运行结果如下:
```
[Person{name='John', age=30}, Person{name='Peter', age=25}, Person{name='Tom', age=25}, Person{name='Tom', age=28}]
```
可以看到,重复的数据被过滤掉了,且排序也符合我们的要求。使用Java8中的Stream和Lambda表达式,使代码更加简洁易读,提高了代码的可维护性和可读性。