一、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 中的元素進行篩選、過濾、映射和排序等操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/276093.html