中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

北京做網(wǎng)站企業(yè)友情鏈接源碼

北京做網(wǎng)站企業(yè),友情鏈接源碼,網(wǎng)站建設(shè)入駐,163公司企業(yè)郵箱文章目錄 Lambda函數(shù)式接口Lambda 規(guī)則規(guī)范簡化過程改寫 Arrays.setAll()改寫 Arrays.sort() forEach循環(huán) list 集合循環(huán) list 集合并輸出對象信息循環(huán) Map 集合 方法引用和構(gòu)造器引用方法引用構(gòu)造器引用 Lambda Lambda是一個匿名函數(shù),我們可以將Lambda表達式理解為…

文章目錄

  • Lambda
  • 函數(shù)式接口
  • Lambda 規(guī)則規(guī)范
  • 簡化過程
    • 改寫 Arrays.setAll()
    • 改寫 Arrays.sort()
  • forEach
    • 循環(huán) list 集合
    • 循環(huán) list 集合并輸出對象信息
    • 循環(huán) Map 集合
  • 方法引用和構(gòu)造器引用
    • 方法引用
    • 構(gòu)造器引用

Lambda

Lambda是一個匿名函數(shù),我們可以將Lambda表達式理解為一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣傳遞)。使用它可以寫出簡潔、靈活的代碼。作為一種更緊湊的代碼風(fēng)格,使 java 語言表達能力得到提升。

基本語法

(parameters) -> expression 
或
(parameters) -> { statements }

函數(shù)式接口

函數(shù)式接口:只包含一個抽象方法的接口,并且可以使用 Lambda 表達式來創(chuàng)建該接口的對象。

  • 函數(shù)式接口: 有且僅有一個抽象方法的接口
  • Java 中的函數(shù)式編程體現(xiàn)就是 Lambda 表達式
  • 所以函數(shù)式接口即可以適用于 Lambda 使用的接口
public static void main(String[] args) {//使用匿名函數(shù)new Thread(new Runnable(){@Overridepublic void run(){System.out.println("我是沒有使用Lambda表達式:不簡潔");}}).start();
}//使用Lambda表達式new Thread(() -> System.out.println("我是使用Lambda表達式:簡潔、靈活")).start();
}

可以在任意函數(shù)式接口上使用 @FunctionalInterface 注解,來檢測它是否是符合函數(shù)式接口。同時 javac 也會包含一條聲明,說明這個接口是否符合函數(shù)式接口。

// 通過
@FunctionalInterface
public interface Lock {public abstract String lockUp(String str1,String str2);  //上鎖// public abstract void openLock();  //開鎖
}
// 報錯
@FunctionalInterface
public interface Lock {public abstract String lockUp(String str1,String str2);  //上鎖public abstract void openLock();  //開鎖
}

注意:自定義函數(shù)式接口時,@FunctionalInterface是可選的,就算不寫這個注解,只要保證滿 足函數(shù)式接口定義的條件,也照樣是函數(shù)式接口。

Lambda 規(guī)則規(guī)范

Lambda 表達式在 java 語言中引入了一種新的語法元素和操作。這種操作符號為 “->” ,Lambda 操作符或箭頭操作符,它將 Lambda 表達式分割為兩部分。

  • 左邊:指 Lambda 表達式的所有參數(shù)
  • 右邊:指 Lambda 體,即表示 Lambda 表達式需要執(zhí)行的功能

Lambda表達式省略規(guī)則

1.Lambda的標準格式(參數(shù)類型1 參數(shù)名1, 參數(shù)類型2 參數(shù)名2) -> {...方法體的代碼...return 返回值;}
2.在標準格式的基礎(chǔ)上()中的參數(shù)類型可以直接省略,因為編譯器可以推斷得出,稱為“類型推斷”(參數(shù)名1, 參數(shù)名2) -> {...方法體的代碼...return 返回值;}
3.如果{}總的語句只有一條語句,則{}可以省略、return關(guān)鍵字、以及最后的“;”都可以省略(參數(shù)名1, 參數(shù)名2) -> 結(jié)果
4.如果()里面只有一個參數(shù),則()可以省略參數(shù)名 -> 結(jié)果

簡化過程

只有基于函數(shù)式接口的匿名內(nèi)部類才能被 Lambda 表達式簡化。下面使用 Lambda 簡化函數(shù)式接口,改寫 Arrays 方法代碼。

改寫 Arrays.setAll()

setAll 用于對數(shù)組進行批量更新。其作用是根據(jù)給定的函數(shù)更新數(shù)組中的每個元素。

語法如下:

public static <T> void setAll(T[] array, IntFunction<? extends T> generator)

  • array: 要更新的數(shù)組
  • generator: 一個 IntFunction,根據(jù)數(shù)組的索引生成新的值

需求如下:把所有元素 * 0.8

public class LambdaTest {public static void main(String[] args) {double[] prices = {99.8, 128, 100};//1.先用匿名內(nèi)部類寫法Arrays.setAll(prices, new IntToDoubleFunction() {@Overridepublic double applyAsDouble(int value) {// value = 0  1  2return prices[value] * 0.8;}});//2.使用Lambda表達式標準寫法Arrays.setAll(prices, (int value) -> {return prices[value] * 0.8;});//3.使用Lambda表達式簡化格式1——省略參數(shù)類型Arrays.setAll(prices, (value) -> {return prices[value] * 0.8;});//4.使用Lambda表達式簡化格式2——省略()Arrays.setAll(prices, value -> {return prices[value] * 0.8;});//5.使用Lambda表達式簡化格式3——省略{}Arrays.setAll(prices, value -> prices[value] * 0.8 );System.out.println(Arrays.toString(prices));}
}

改寫 Arrays.sort()

sort 方法用于對數(shù)組進行排序

語法如下:

public static <T> void sort(T[] a, Comparator<? super T> c)

  • a: 要排序的對象數(shù)組
  • c: 自定義的比較器(Comparator

需求如下:對數(shù)組中的元素按照年齡升序排列

public class LambdaTest2 {public static void main(String[] args) {Student[] students = new Student[4];students[0] = new Student("張三", 169.5, 23);students[1] = new Student("李四", 163.8, 26);students[2] = new Student("王五", 163.8, 26);students[3] = new Student("趙六", 167.5, 24);//1.先用匿名內(nèi)部類寫法Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return Double.compare(o1.getHeight(), o2.getHeight()); // 升序}});//2.使用Lambda表達式標準格式Arrays.sort(students, (Student o1, Student o2) -> {return Double.compare(o1.getHeight(), o2.getHeight()); // 升序});//3.使用Lambda表達式簡化格式1——省略參數(shù)類型Arrays.sort(students, ( o1,  o2) -> {return Double.compare(o1.getHeight(), o2.getHeight()); // 升序});//4.使用Lambda表達式簡化格式3——省略{}Arrays.sort(students, ( o1,  o2) -> Double.compare(o1.getHeight(), o2.getHeight()));System.out.println(Arrays.toString(students));}
}

forEach

forEach 是 Java 8 引入的一種簡潔的方式,用于遍歷集合中的每個元素。它是 Collection 接口和 Map 接口中的一個默認方法,支持函數(shù)式編程風(fēng)格。forEach 方法可以與 Lambda 表達式或方法引用結(jié)合使用,簡化了傳統(tǒng)的迭代代碼。

forEach 方法的定義如下:

void forEach(Consumer<? super T> action);
  • Consumer: 函數(shù)式接口,表示接受一個輸入?yún)?shù)并對其進行操作而沒有返回結(jié)果
  • T: 集合中元素的類型

循環(huán) list 集合

List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.forEach(s -> System.out.println(s));

循環(huán) list 集合并輸出對象信息

public class UserVo {private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}
}
List<UserVo> list = new ArrayList<UserVo>();
list.add(new UserVo());
list.add(new UserVo());
list.add(new UserVo());
list.forEach(s -> System.out.println(s.getUserName()));

循環(huán) Map 集合

Map<String, UserVo> map = new HashMap<String, UserVo>();
map.put("A", new UserVo());
map.put("B", new UserVo());
map.put("C", new UserVo());

使用傳統(tǒng) forEach 循環(huán)

for (Map.Entry<String, UserVo> entry : map.entrySet()) {System.out.println(entry.getKey() + ":" + entry.getValue().getUserName());
}

使用 lambda 表達式

map.forEach(new BiConsumer<String, UserVo>() {@Overridepublic void accept(String k, UserVo v) {System.out.println(k + ":" + v.getUserName());}
});

簡寫

map.forEach((k,v) -> System.out.println(k + ":" + v.getUserName()));

方法引用和構(gòu)造器引用

方法引用

當(dāng)要傳遞給 Lambda 體的操作已經(jīng)有實現(xiàn)方法,可以直接使用方法引用(實現(xiàn)抽象方法的列表,必須要和方法引用的方法參數(shù)列表一致)

方法引用使用操作符 :: 將方法名和類或者對象分割開來

有下列三種情況:

對象::實例方法
類::實例方法
類::靜態(tài)方法
@FunctionalInterface
public interface Lock {public abstract void lockUp(String str);  //上鎖
}
Lock lock = System.out::println;
lock.lockUp("測試......");

構(gòu)造器引用

本質(zhì)上構(gòu)造器引用和方法引用相似,只是使用了一個 new 方法

使用說明:函數(shù)式接口參數(shù)列表和構(gòu)造器參數(shù)列表要一致,該接口返回值類型也是構(gòu)造器返回值類型

格式:ClassName :: new

@FunctionalInterface
public interface Lock {public abstract String lockUp(String str);  //上鎖
}
// 非構(gòu)造器引用
Lock lock1 = (s) -> new String(s);
// 構(gòu)造器引用
Lock lock2 = String::new;
http://www.risenshineclean.com/news/57634.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)的詳細步驟電子商務(wù)網(wǎng)頁制作
  • 做網(wǎng)站大概要多少錢微商營銷
  • 長沙響應(yīng)式網(wǎng)站設(shè)計有哪些優(yōu)化營商環(huán)境發(fā)言材料
  • win7本機做網(wǎng)站微信朋友圈廣告在哪里做
  • 做鋼化膜網(wǎng)站長沙seo優(yōu)化
  • 大連裝修公司哪家口碑最好深圳搜索引擎優(yōu)化收費
  • 知道ip域名如何進入網(wǎng)站如何推廣一款app
  • 愛潤妍網(wǎng)站開發(fā)河南企業(yè)網(wǎng)站推廣
  • 室內(nèi)設(shè)計畢業(yè)設(shè)計代做網(wǎng)站seo是搜索引擎營銷
  • 重慶大渡口營銷型網(wǎng)站建設(shè)公司哪家專業(yè)win7系統(tǒng)優(yōu)化軟件
  • 公司做網(wǎng)站費用上海seo網(wǎng)站策劃
  • 柳北網(wǎng)站制作網(wǎng)上推廣賺錢項目
  • 惠州網(wǎng)站建設(shè) 英語太原百度網(wǎng)站快速排名
  • 免費網(wǎng)站訪客qq統(tǒng)計系統(tǒng)今日最新聞
  • 靈山網(wǎng)站建設(shè)seo點擊排名軟件哪里好
  • 淘寶客怎樣做網(wǎng)站網(wǎng)站優(yōu)化推廣
  • 網(wǎng)站平臺延展性網(wǎng)站優(yōu)化與seo
  • 網(wǎng)站機房建設(shè)解決方案搜索優(yōu)化是什么意思
  • 響應(yīng)式網(wǎng)站咨詢域名關(guān)鍵詞查詢
  • java做直播網(wǎng)站有哪些網(wǎng)推
  • 2_ 如何寫一份詳細的網(wǎng)站開發(fā)方案鄭州seo代理外包公司
  • 長春專業(yè)網(wǎng)站建設(shè)價格seo核心技術(shù)排名
  • 淄博網(wǎng)站建設(shè)方案免費制作網(wǎng)站app
  • 企業(yè)門戶網(wǎng)站云服務(wù)器配置要求seo整站優(yōu)化方案案例
  • 軟件怎么做出來的長沙做優(yōu)化的公司
  • 電子商務(wù)網(wǎng)站開發(fā)的意義東莞seo排名外包
  • 如何將vs做的網(wǎng)站備份出來6購買鏈接怎么買
  • 隨州網(wǎng)站制作價格百度商業(yè)平臺
  • 網(wǎng)站標題組合百度400電話
  • 國家建設(shè)部查詢網(wǎng)站北京優(yōu)化靠譜的公司