您的位置:

使用Lambda表达式遍历List

一、Lambda表达式的简介

Lambda表达式是Java SE 8中一个重要的新特性。它是一个匿名函数,它可以传递给方法作为参数,并可以像对象一样进行存储。Lambda表达式可以在不使用类或者接口的情况下创建函数。

它的一般形式为:

(parameters) -> expression
或
(parameters) -> { statements; }

这里,parameters 是 Lambda 表达式的参数列表,这里我们可以直接指定参数类型或使用类型推断来省略参数类型。-> 是 Lambda 表达式的语法结构。而 expression 或 statements 则是 Lambda 表达式的函数体。

二、使用Lambda表达式遍历List

在Java中,遍历一个List一般需要使用迭代器或增强for循环。使用Lambda表达式可以使得代码更简洁易懂。

List list = Arrays.asList("a", "b", "c", "d");
list.forEach((String s) -> System.out.println(s));

  

上面的代码中,我们使用 forEach 方法和 Lambda 表达式遍历了一个字符串类型的 List。这里,Lambda 表达式被用作 Consumer 函数式接口的一个实例,它接收一个字符串参数,然后打印该字符串。

当然,由于Java SE 8引入了类型推断特性,我们可以省略参数类型:

List list = Arrays.asList("a", "b", "c", "d");
list.forEach(s -> System.out.println(s));

  

三、Lambda表达式遍历List的其他应用

1、遍历一个对象类型的List

假设我们有一个 Person 类型的 List:

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

List persons = Arrays.asList(
        new Person("Tom", 20),
        new Person("Mike", 30),
        new Person("Jack", 25)
);

persons.forEach(person -> System.out.println(person.getName() + " " + person.getAge()));

  

2、List中元素的筛选

我们可以使用 Lambda 表达式结合 Stream API 对 List 中的元素进行筛选、过滤等操作。比如,我们可以过滤出年龄大于等于 25 的 Person:

persons.stream().filter(person -> person.getAge() >= 25).forEach(person -> System.out.println(person.getName() + " " + person.getAge()));

上面的代码中,我们使用了 Stream API 的 filter 方法对 persons List 进行过滤,只保留年龄大于等于 25 的 Person。

3、对List中的元素进行映射

我们可以使用 map 方法将 List 中的每个元素映射为另外一种类型的元素。比如,我们可以创建一个 List,其中每个元素为 Person 的姓名:

List names = persons.stream().map(Person::getName).collect(Collectors.toList());

  

上面的代码中,我们使用 map 方法将 Person 中的 name 属性映射为 String 类型,并使用 collect 方法将结果收集到一个新的 List 中。

4、对List中的元素进行排序

我们可以使用 sorted 方法对 List 中的元素进行排序,比如按照年龄从小到大排序:

List sortedPersons = persons.stream().sorted(Comparator.comparingInt(Person::getAge)).collect(Collectors.toList());

  

上面的代码中,我们使用了 sorted 方法和 Comparator 对 List 中的元素进行排序,以年龄为比较依据。

四、总结

Lambda表达式是Java SE 8中一个非常重要的新特性,它的简洁性和灵活性为Java程序员带来了极大的便利。

使用Lambda表达式遍历List可以使得代码更加简洁易懂,同时,结合 Stream API 可以对 List 中的元素进行筛选、过滤、映射和排序等操作。