Java 中有哪些內建函式式介面?
**java.util.function** 包定義了幾個內建函式式介面,在建立 **lambda 表示式** 或 **方法引用** 時可以使用這些介面。
內建函式式介面
1) Function 介面
**Function 介面** 只有一個單獨的方法 **apply()**。它可以接受任何資料型別的物件,並返回任何資料型別的結果。
示例
import java.util.*;
import java.util.function.*;
public class FunctionTest {
public static void main(String args[]) {
String[] countries = {"India", "Australia", "England", "South Africa", "Srilanka", "Newzealand", "West Indies", "Scotland"};
Function<String[], String> converter = (all) -> { // lambda expression
String names = "";
for(String n : all) {
String result = n.substring(0, n.indexOf(""));
result = n.substring(n.indexOf("")) + " " + result;
names += result + "
";
}
return names;
};
System.out.println(converter.apply(countries));
}
}輸出
India Australia England South Africa Srilanka Newzealand West Indies Scotland
2) Supplier 介面
**Supplier 介面** 只有一個單獨的方法,稱為 **get()**。它不接受任何引數,並返回任何資料型別的一個物件。
示例
import java.util.*;
import java.util.function.*;
public class SupplierTest {
private static void printNames(Supplier<String> arg) {
System.out.println(arg.get());
}
private static void listBeginWith(List<String> list, Predicate<String> valid) {
printNames(() -> "
List of countries:");
list.forEach(country -> { // lambda expression
if(valid.test(country)) {
printNames(() -> country);
}
});
}
public static void main(String[] args) {
String[] countries = {"India", "Australia", "England", "South Africa", "Srilanka", "Newzealand", "West Indies"};
List<String> countryList = Arrays.asList(countries);
listBeginWith(countryList, (s) -> s.startsWith("I"));
listBeginWith(countryList, (s) -> s.contains("I"));
listBeginWith(countryList, (s) -> s.endsWith("ia"));
}
}輸出
List of countries: India List of countries: India West Indies List of countries: India Australia
3) Consumer 介面
**Consumer 介面** 只有一個單獨的方法,稱為 **accept()**。它接受任何資料型別的單個引數,並且不返回任何結果。
示例
import java.util.*;
import java.util.function.*;
public class ConsumerTest {
public static void main(String[] args) {
String[] countries = {"India", "Australia", "England", "South Africa", "Srilanka", "Newzealand", "West Indies"};
System.out.print("The list of countries:
");
Arrays.asList(countries).forEach((country) -> System.out.println(country)); // lambda expression
}
}輸出
The list of countries: India Australia England South Africa Srilanka Newzealand West Indies
4) Predicate 介面
**Predicate 介面** 只有一個單獨的方法**test()**。它可以是 **true** 或 **false**,具體取決於其變數的值。
示例
import java.util.*;
import java.util.function.*;
public class PredicateTest {
private static List getBeginWith(List<String> list, Predicate<String> valid) {
List<String> selected = new ArrayList<>();
list.forEach(country -> { // lambda expression
if(valid.test(country)) {
selected.add(country);
}
});
return selected;
}
public static void main(String[] args) {
String[] countries = {"India", "Australia", "England", "South Africa", "Srilanka", "Newzealand", "West Indies"};
List<String> countryList = Arrays.asList(countries);
System.out.println(getBeginWith(countryList, (s) -> s.startsWith("A")));
System.out.println(getBeginWith(countryList, (s) -> s.contains("W")));
System.out.println(getBeginWith(countryList, (s) -> s.endsWith("nd")));
}
}輸出
[Australia] [West Indies] [England, Newzealand]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
安卓
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP