在Java語(yǔ)言中,Lambda表達(dá)式是一種簡(jiǎn)潔的語(yǔ)法結(jié)構(gòu),可以用來(lái)表示一個(gè)函數(shù)式接口。
//傳統(tǒng)方式 Runnable r = new Runnable() { @Override public void run() { System.out.println("Hello,World!"); } }; r.run(); //使用Lambda表達(dá)式 Runnable r2 = () -> System.out.println("Hello,World!"); r2.run();
可以看到,傳統(tǒng)方式需要定義一個(gè)匿名內(nèi)部類,并重寫run方法。而使用Lambda表達(dá)式,可以省略匿名內(nèi)部類的定義,直接在參數(shù)中定義方法的邏輯。
在Java 8中,新增了函數(shù)式接口,如Function、Predicate等。這些接口主要用于描述一種功能,以傳遞行為為目的。Lambda表達(dá)式可以用來(lái)實(shí)現(xiàn)這些函數(shù)式接口,極大地減少了代碼量和復(fù)雜度。
//傳統(tǒng)方式 List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); List<String> newList = new ArrayList<>(); for(String s : list){ if(s.length() > 5){ newList.add(s.toUpperCase()); } } System.out.println(newList); //使用Lambda表達(dá)式 List<String> list2 = new ArrayList<>(); list2.add("apple"); list2.add("banana"); list2.add("orange"); List<String> newList2 = list2.stream() .filter(s -> s.length() > 5) .map(String::toUpperCase) .collect(Collectors.toList()); System.out.println(newList2);
可以看到,傳統(tǒng)方式需要使用循環(huán)遍歷集合,進(jìn)行判斷和轉(zhuǎn)換。而使用Lambda表達(dá)式,可以使用函數(shù)式接口中提供的方法,進(jìn)行操作,并返回結(jié)果集合。
總而言之,Lambda表達(dá)式是Java語(yǔ)言中非常強(qiáng)大和方便的特性,可以極大地提高代碼效率和可讀性。