jsp过滤器示例_Java 8过滤器,地图,收集和流示例
jsp過濾器示例
大家好,許多讀者給我發(fā)了電子郵件,寫了一篇有關(guān)Java 8的地圖和過濾器功能的文章,因?yàn)樗麄儼l(fā)現(xiàn)它們難以理解和使用。 即使我以前同時(shí)寫過有關(guān)map()和filter()的博客,我仍在寫這篇文章,以更多的外行語言來解釋該概念,以更好地理解我的讀者和Java開發(fā)人員。
map()函數(shù)是Stream類中的一種方法,表示一種功能編程概念。 簡(jiǎn)而言之, map()用于通過應(yīng)用function將一個(gè)對(duì)象轉(zhuǎn)換為另一個(gè)對(duì)象 。
這就是Stream.map(Function mapper)將函數(shù)作為參數(shù)的原因。 例如,通過使用map()函數(shù),可以通過對(duì)輸入列表中的每個(gè)String應(yīng)用Integer.valueOf()方法,將String列表轉(zhuǎn)換為Integer列表。
您只需要一個(gè)映射函數(shù)即可將一個(gè)對(duì)象轉(zhuǎn)換為另一個(gè)對(duì)象,而map()函數(shù)將為您完成轉(zhuǎn)換。
這也是中間流操作,這意味著您可以調(diào)用其他Stream方法(例如過濾器)或?qū)Υ诉M(jìn)行收集以創(chuàng)建轉(zhuǎn)換鏈。
現(xiàn)在,使用filter方法,顧名思義, 它會(huì)根據(jù)您提供給您的條件來過濾元素 。 例如,如果您的列表中包含數(shù)字,而您只需要偶數(shù),則可以使用過濾器方法選擇唯一可被二整除的數(shù)字。
過濾方法實(shí)質(zhì)上是根據(jù)您提供的條件選擇元素。 這就是filter(Predicate condition)接受提供應(yīng)用條件功能的Predicate對(duì)象的原因。 如果條件評(píng)估為true,則選擇對(duì)象,否則將忽略該對(duì)象。
與map相似,過濾器也是中間操作,這意味著您可以在調(diào)用過濾器后調(diào)用其他Stream方法。
filter()方法也是惰性的 ,這意味著它只有在調(diào)用諸如collect這樣的簡(jiǎn)化方法時(shí)才會(huì)被評(píng)估,并且一旦到達(dá)目標(biāo)就將停止。
1.如何在Java 8中使用地圖和過濾器
您需要一個(gè)很好的例子來理解新概念,這就是您閱讀本文的原因。 由于String和Integer是Java中最常見的數(shù)據(jù)類型,因此我選擇了一個(gè)既簡(jiǎn)單又有趣的示例。
我有一個(gè)String列表,它是數(shù)字,例如{"1", "2", "3", "4", "5", "6"}我想處理此列表,并且需要另一個(gè)帶有偶數(shù)的Integer列表數(shù)字 。
為了找到偶數(shù),我首先需要將String列表轉(zhuǎn)換為Integer列表,為此,我可以使用java.util.Stream類的map()方法,但是在此之前,我們需要將Stream作為map()在java.util.stream中定義。 流類。
但是,這一點(diǎn)都不困難,因?yàn)槟梢酝ㄟ^調(diào)用stream()方法從任何Collection(例如List或Set)中獲取流,因?yàn)樗窃趈ava.util.Collection接口中定義的。
map(Function mapper)方法采用一個(gè)Function ,從技術(shù)上講是java.util.function.Function interface一個(gè)對(duì)象。 然后將此函數(shù)應(yīng)用于Stream的每個(gè)元素,以轉(zhuǎn)換為所需的類型。
由于需要將String轉(zhuǎn)換為Integer,因此可以將Integer.parseInt()或Integer.valueOf()方法傳遞給map()函數(shù)。 我之所以選擇valueOf()方法,是因?yàn)槲以趐arseInt與valueOf文章中提到的原因,即性能和緩存。
然后map()將返回一個(gè)包含偶數(shù)和奇數(shù)的整數(shù)流。 要僅選擇偶數(shù),我們可以使用filter()方法。 它需要一個(gè)Predicate對(duì)象,從技術(shù)上講,它是將對(duì)象轉(zhuǎn)換為boolean的函數(shù) 。 我的意思是我們傳遞了一個(gè)對(duì)象,它將返回true或false。 過濾器使用該信息將對(duì)象包括在結(jié)果流中。
因此,為了只包括偶數(shù),我們將其稱為filter( number -> number%2==0) ,這意味著每個(gè)數(shù)字將被零除,如果沒有余數(shù),則將其選中。
我們差不多完成了,但是到目前為止,我們只有偶數(shù)整數(shù)流,而沒有偶數(shù)整數(shù)列表,這就是為什么我們需要使用collect()方法的原因,該方法將Stream元素收集到指定的Collection中。
由于我們需要列表,因此我調(diào)用了collect(Collectors.toList()) ,它將把所有偶數(shù)累加到List中并返回。 現(xiàn)在您可能正在考慮如何知道要返回的Integer列表,它很好地通過類型推斷來獲取該信息,因?yàn)槲覀円呀?jīng)通過將結(jié)果存儲(chǔ)到List<Integer> 。
2. Java 8 Map +過濾+收集示例
這是Java程序,用于實(shí)現(xiàn)我在上一節(jié)中所說的內(nèi)容。 您可以在IDE中或從命令行運(yùn)行此程序,然后查看結(jié)果。 您也可以嘗試使用更多的map()函數(shù)或更多的filter()調(diào)用來使合成更長(zhǎng),更復(fù)雜。 您甚至可以使用collect()方法將結(jié)果收集到列表,集合,地圖或任何其他集合中。
package tool;import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;/*** * A simple Java Program to demonstrate how to use map and filter method Java 8.* In this program, we'll convert a list of String into a list of Integer and* then filter all even numbers.*/ public class Hello {public static void main(String[] args) {List<String> numbers = Arrays.asList("1", "2", "3", "4", "5", "6");System.out.println("original list: " + numbers);List<Integer> even = numbers.stream().map(s -> Integer.valueOf(s)).filter(number -> number % 2 == 0).collect(Collectors.toList());System.out.println("processed list, only even numbers: " + even);}}Output original list: [1, 2, 3, 4, 5, 6] the processed list, only even numbers: [2, 4, 6]您可以看到原始列表包含從1到6的數(shù)字,而過濾后的列表僅包含偶數(shù),即2、4和6。
此示例中最重要的代碼是以下4行Stream處理代碼:
此代碼首先繪制地圖,然后過濾并最終收集。 您可能想知道順序是否重要,是否確實(shí)如此。 由于我們的過濾條件需要一個(gè)int變量,因此我們首先需要將String 流轉(zhuǎn)換為Integer流 ,這就是為什么我們首先調(diào)用map()函數(shù)的原因。
一旦獲得整數(shù)流,就可以應(yīng)用數(shù)學(xué)找出偶數(shù),然后將該條件傳遞給filter方法。
如果我們需要對(duì)String進(jìn)行過濾,例如選擇所有l(wèi)ength > 2字符串,那么我們將在map之前調(diào)用filter。
這就是如何在Java 8中使用map和filter的全部?jī)?nèi)容。 我們已經(jīng)看到了一個(gè)有趣的示例,說明如何使用地圖將對(duì)象轉(zhuǎn)換為另一個(gè)對(duì)象,并根據(jù)條件進(jìn)行過濾以選擇對(duì)象。 我們還學(xué)習(xí)了如何在流上編寫操作以編寫清晰明了的代碼。
感謝您到目前為止閱讀本教程。 如果您喜歡這個(gè)Java 8 map +過濾器示例和我的解釋,請(qǐng)與您的朋友和同事分享。 如果您有任何疑問或反饋,請(qǐng)留言。
翻譯自: https://www.javacodegeeks.com/2018/05/java-8-filter-map-collect-stream-example.html
jsp過濾器示例
總結(jié)
以上是生活随笔為你收集整理的jsp过滤器示例_Java 8过滤器,地图,收集和流示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps怎么新建彩色背景图片(ps怎么新建彩
- 下一篇: java求期望_Java 11的期望