一、Lambda表达式的简介
Lambda表达式是Java SE 8中一个重要的新特性。它是一个匿名函数,它可以传递给方法作为参数,并可以像对象一样进行存储。Lambda表达式可以在不使用类或者接口的情况下创建函数。
它的一般形式为:
(parameters) -> expression 或 (parameters) -> { statements; }
这里,parameters 是 Lambda 表达式的参数列表,这里我们可以直接指定参数类型或使用类型推断来省略参数类型。-> 是 Lambda 表达式的语法结构。而 expression 或 statements 则是 Lambda 表达式的函数体。
二、使用Lambda表达式遍历List
在Java中,遍历一个List一般需要使用迭代器或增强for循环。使用Lambda表达式可以使得代码更简洁易懂。
Listlist = Arrays.asList("a", "b", "c", "d"); list.forEach((String s) -> System.out.println(s));
上面的代码中,我们使用 forEach 方法和 Lambda 表达式遍历了一个字符串类型的 List。这里,Lambda 表达式被用作 Consumer 函数式接口的一个实例,它接收一个字符串参数,然后打印该字符串。
当然,由于Java SE 8引入了类型推断特性,我们可以省略参数类型:
Listlist = 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; } } Listpersons = 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 的姓名:
Listnames = persons.stream().map(Person::getName).collect(Collectors.toList());
上面的代码中,我们使用 map 方法将 Person 中的 name 属性映射为 String 类型,并使用 collect 方法将结果收集到一个新的 List 中。
4、对List中的元素进行排序
我们可以使用 sorted 方法对 List 中的元素进行排序,比如按照年龄从小到大排序:
ListsortedPersons = persons.stream().sorted(Comparator.comparingInt(Person::getAge)).collect(Collectors.toList());
上面的代码中,我们使用了 sorted 方法和 Comparator 对 List 中的元素进行排序,以年龄为比较依据。
四、总结
Lambda表达式是Java SE 8中一个非常重要的新特性,它的简洁性和灵活性为Java程序员带来了极大的便利。
使用Lambda表达式遍历List可以使得代码更加简洁易懂,同时,结合 Stream API 可以对 List 中的元素进行筛选、过滤、映射和排序等操作。