JAVA基礎程式設計104--函式式介面《下》
阿新 • • 發佈:2018-12-09
函式式介面使用案例
一、Runnable
/**
* 1、Runnable :執行緒啟用介面
* A、void run()
* 多執行緒用junit5.0進行單元測試
*/
@Test
public void test1() {
startThread(() ->
System.out.println(Thread.currentThread().getName() + "-->執行緒啟動...")
);
}
//呼叫該方法啟動一個執行緒
public void startThread (Runnable run) {
new Thread(run).start();
}
二、Comparator
/**
* 2、Comparator: 比較器
* A、int compare(T o1, T o2)
*
*/
@Test
public void test2() {
String[] arr = {"bb", "a", "ccccc", "ddd", "aaaa"};
Arrays.sort(arr, getComparator());
System.out.println(Arrays.toString(arr));
}
//呼叫該方法實現陣列倒序排序
public Comparator<String> getComparator() {
return (o1, o2) -> o2.length() - o1.length();
}
三、Supplier
/**
* 3、Supplier: 消費型介面
* A、T get()
* JDK1.8內建核心函式介面
*/
@Test
public void test3() {
getConsumer(100, (x) -> System.out.println(100));
}
//呼叫該方法實現對元素的消費
public void getConsumer(double a, Consumer<Double> b) {
b.accept(a);
}
四、Consumer
/**
* 4、Consumer: 生產型介面
* A、void accept(T t)
* JDK1.8內建核心函式介面
*/
@Test
public void test4() {
Random r = new Random();
int[] arr = getSupplier(10, () -> r.nextInt(100)+1);
System.out.println(Arrays.toString(arr));
}
//呼叫該方法隨機生成指定長度陣列
public int[] getSupplier(int sum, Supplier<Integer> sup) {
int[] arr = new int[sum];
for (int i = 0; i < sum; i++) {
arr[i] = sup.get();
}
return arr;
}
五、Predicate
/**
* 5、predicate:判斷型介面/斷言介面
* A、boolean test(T t)
* JDK1.8內建核心函式介面
*/
@Test
public void test5(){
List<Integer> l = List.of(100,78,65,67,98,53,76,23,65);
List<Integer> list = getpredicate(l, x ->x > 60);
list.forEach(x-> System.out.println(x));
}
//呼叫該方法實現對陣列篩選
public List<Integer> getpredicate(List<Integer> list, Predicate<Integer> p){
List<Integer> l = new ArrayList<>();
for (Integer integer : list) {
if(p.test(integer)) {
l.add(integer);
}
}
return l;
}
六、Function
/**
* 6、Function: 功能型介面
* A、R apply(T t)
* JDK1.8內建核心函式介面
*/
@Test
public void test6(){
String str = " sadhfkasdf ";
//字串擷取
String str1 = getFuntion(str, s -> s.substring(2, 4));
System.out.println(str1);
//字串去空格
String str2 = getFuntion(str, s -> s.trim());
System.out.println(str2);
}
//呼叫該方法實現對字串的處理
public String getFuntion(String str, Function<String,String> fun){
return fun.apply(str);
}