List 接口中的 sort 和 forEach 方法是 Java 8 引入的兩個非常實用的函數,分別用于 排序 和 遍歷 列表中的元素。以下是它們的詳細介紹和用法:
- sort 函數
功能
對列表中的元素進行排序。
默認使用自然順序(如數字從小到大,字符串按字典序),也可以通過自定義比較器(Comparator)指定排序規則。
方法簽名
void sort(Comparator<? super E> c)
參數Comparator<? super E> c:用于指定排序規則的比較器。如果為 null,則使用元素的自然順序。
示例:
默認排序(自然順序)
List<Integer> numbers = Arrays.asList(5, 3, 8, 1);
numbers.sort(null); // 使用自然順序
System.out.println(numbers); // 輸出: [1, 3, 5, 8]
自定義排序(使用比較器)
List<String> words = Arrays.asList("Java", "Python", "C++");
words.sort((s1, s2) -> s1.length() - s2.length()); // 按字符串長度排序
System.out.println(words); // 輸出: [C++, Java, Python]
使用 Comparator 工具類
List<String> words = Arrays.asList("Java", "Python", "C++");
words.sort(Comparator.comparingInt(String::length)); // 按字符串長度排序
System.out.println(words); // 輸出: [C++, Java, Python]
- forEach 函數
功能:
遍歷列表中的每個元素,并對每個元素執行指定的操作。
通常用于簡化遍歷邏輯。
方法簽名
void forEach(Consumer<? super E> action)
參數Consumer<? super E> action:對每個元素執行的操作,通常是一個 Lambda 表達式或方法引用。
示例
遍歷并打印元素
List<String> words = Arrays.asList("Java", "Python", "C++");
words.forEach(word -> System.out.println(word));
// 輸出:
// Java
// Python
// C++
使用方法引用
List<String> words = Arrays.asList("Java", "Python", "C++");
words.forEach(System.out::println); // 使用方法引用
// 輸出:
// Java
// Python
// C++
遍歷并修改元素
List<String> words = Arrays.asList("Java", "Python", "C++");
words.forEach(word -> word = word.toUpperCase()); // 注意:這里不會修改原列表
System.out.println(words); // 輸出: [Java, Python, C++]
如果需要修改元素,可以使用 replaceAll 方法:
words.replaceAll(String::toUpperCase);
System.out.println(words); // 輸出: [JAVA, PYTHON, C++]
- 結合使用 sort 和 forEach
List<String> words = Arrays.asList("Java", "Python", "C++");// 按字符串長度排序
words.sort(Comparator.comparingInt(String::length));// 遍歷并打印排序后的元素
words.forEach(System.out::println);// 輸出:
// C++
// Java
// Python
- 總結
sort:用于排序,支持自然順序和自定義比較器。
forEach:用于遍歷,簡化代碼邏輯。
這兩個函數是 Java 8 引入的函數式編程特性的一部分,能夠顯著提高代碼的簡潔性和可讀性。