java集合提取最小的日期_提取Java集合的元素-Java 8方法
java集合提取最小的日期
我們都廣泛使用了Collection類,例如List,Map及其派生版本。 每次使用它們時,我們都必須遍歷它們以找到某個元素或更新這些元素,或者找到匹配某個條件的不同元素。 考慮如下所示的人員列表:
為了找出年齡大于30歲的所有Person實例,我們可以這樣做:
List<Person> olderThan30OldWay = new ArrayList<>(); for ( Person p : personList){if ( p.age >= 30){olderThan30OldWay.add(p);} } System.out.println(olderThan30OldWay);這給了我輸出為:
[Rajesh Mohan, 32, Rahul Dravid, 35]該代碼易于編寫,但是是否更冗長一些,尤其是在迭代部分? 我們為什么要迭代? 如果有一個API可以迭代內容并給我們最終結果,即我們給出源List并使用一系列方法調用來獲得我們正在尋找的結果List,那不是很酷嗎? 是的,這在其他語言(例如Scala,Groovy)中是可行的,它們支持傳遞閉包,也支持內部迭代。 但是Java開發人員有解決方案嗎? 是的,通過引入對Lambda Expressions(closures)的支持和增強的Collection API來利用lambda Expression支持,可以解決這個確切的問題。 不幸的消息是它將成為Java 8的一部分,并且將需要一些時間才能進入主流開發。
利用Java 8對上述情況的增強
正如我在增強Collections API以支持Lambda Expression之前所說的那樣,可以在這里閱讀有關它的更多信息。 JDK團隊沒有將所有新的API添加到Collection類中,而是創建了一個稱為“ Stream”的新概念,并在該類中添加了大多數API。 “流”是從創建它的集合中獲得的一系列元素。 要了解有關Stream類起源的更多信息,請參考此文檔 。 為了實現從使用Java 8中的增強功能開始的示例,我們將使用一些新的API,即:stream(),filter(),collect(),Collectors.toCollection()。
stream() :使用在其上調用此API的集合來創建Stream類的實例。
filter() :此方法接受一個lambda表達式,該表達式接受一個參數并返回一個布爾值。 該lambda表達式被編寫為實現Predicate類的替代。 collect() :此方法有2個重載版本。 我在這里使用的是一個Collector的實例。 此方法獲取流的內容并構造另一個集合。 此構造邏輯由收集器定義。 Collectors.toCollection() : 收藏家是一個工廠收集 。 并且toCollection()采用Lambda表達式/方法引用,該引用應返回Collection類的任何派生類的新實例。
簡要介紹所使用的API之后,讓我展示與第一個代碼示例等效的代碼:
List<Person> olderThan30 = //Create a Stream from the personListpersonList.stream().//filter the element to select only those with age >= 30filter(p -> p.age >= 30).//put those filtered elements into a new List.collect(Collectors.toCollection(() -> new ArrayList<Person>())); System.out.println(olderThan30); 上面的代碼同時使用了內部迭代和lambda表達式,使其直觀,簡潔且令人耳目一新。 如果您不熟悉Lambda表達式的概念,請查看我以前的文章 ,其中簡要介紹了Lambda表達式。
參考:從Javas 合作伙伴 Mohamed Sanaulla的Experiences Unlimited博客中提取Java集合的元素-Java 8方法 。
翻譯自: https://www.javacodegeeks.com/2013/03/extracting-the-elements-of-the-java-collection-the-java-8-way.html
java集合提取最小的日期
總結
以上是生活随笔為你收集整理的java集合提取最小的日期_提取Java集合的元素-Java 8方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 流涎怎么读 流涎读音和解释
- 下一篇: 袁隗怎么读 袁隗的简介