Java8新特性代码举例
时间: 2023-11-12 16:53:59 浏览: 48
1. Lambda表达式
// 传统写法
List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
// Lambda表达式写法
List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));
2. Stream API
// 过滤出年龄大于等于18岁的人
List<Person> people = Arrays.asList(new Person("Tom", 20),
new Person("Jerry", 17),
new Person("Mike", 25));
List<Person> adults = people.stream()
.filter(p -> p.getAge() >= 18)
.collect(Collectors.toList());
// 计算所有人年龄的平均值
List<Person> people = Arrays.asList(new Person("Tom", 20),
new Person("Jerry", 17),
new Person("Mike", 25));
double avgAge = people.stream()
.mapToInt(Person::getAge)
.average()
.orElse(0.0);
3. 方法引用
// 传统写法
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
// 方法引用写法
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(System.out::println);
4. 默认方法
interface Animal {
void eat();
default void run() {
System.out.println("Animal is running");
}
}
class Dog implements Animal {
@Override
public void eat() {
System.out.println("Dog is eating");
}
}
Animal animal = new Dog();
animal.eat(); // 输出:Dog is eating
animal.run(); // 输出:Animal is running
5. 接口静态方法
interface Calculator {
static int add(int a, int b) {
return a + b;
}
}
int result = Calculator.add(1, 2); // 输出:3