java 方法 示例_Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射...
java 方法 示例
大家好,這是我在該博客上發表的有關Java 9功能的第一篇文章,今天您將了解我最喜歡的功能“收集的工廠方法” ,它是JEP 269的一部分。JEP代表JDK增強建議。 如果您曾經在Groovy或Kotlin工作過,那么您就會知道使用集合文字使用元素創建列表是多么容易,例如,創建1,2,3列表,您只需編寫val items = listOf(1, 2, 3) 。 不幸的是,Java尚不支持Java,但是JDK 9中的工廠收集方法已經改善了一切,幾乎就像那樣。 JDK在基本的Collection接口上添加了諸如of()類of() 靜態工廠方法 ,您可以使用它們來創建項目列表。
盡管Project Jigsaw或Java Module系統是Java 9發行版的主要亮點,但是從開發的角度來看,還有其他一些有用的功能更有用,例如流程API附魔,Stream API增強以及Optional類的一些有用方法,但是我最喜歡的API更改是Collection的工廠方法。
就像在Kotlin , Scala或Groovy中一樣,它使您可以在一行中創建值的列表,集合和值的映射:
List<String> list = List.of("Java", "Kotlin", "Groovy");但是,唯一要注意的是,您可以創建不可修改或不可變的 List,Set或Map。
of()靜態工廠方法返回的List,Set或Map在結構上是不可變的,這意味著一旦添加,就不能添加,刪除或更改元素。
調用任何mutator方法都將始終引發UnsupportedOperationException 。 但是,如果所包含的元素本身是可變的,則可能導致Collection的行為不一致或它的內容似乎發生變化。
這與您在JDK 6或7中創建的不可修改列表相同,如下所示:
List<String> listOfString = new List<>(); listOfString.add("Java"); listOfString.add("Kotlin"); listOfString.add("Groovy"); listOfString.add("Scala"); listOfString = Collections.unmodifiableList(listOfString);unmodifiableList()方法返回的列表也不支持添加,刪除或設置操作,如果調用它們,則拋出UnsupportedOperationException 。
兩種代碼之間的唯一區別是,更早的代碼需要6行以上的代碼才能創建不可變的Collection,例如不可變的List,Set或Map,但是現在您只需一行即可。
List接口上還有List.of()多個重載版本,例如,允許您創建1到10個元素的不可變列表,以及允許您創建任意數量的元素列表的可變參數方法 。
Set.of( )和Map.of()方法也是如此。 這是在Java 9中創建不可變Set的示例:
Set<Integer> primes = Set.of(2,3,5,7);您會看到僅一行就可以創建一個不可變的Set。 同樣,要創建不可變Map,JDK 9提供了兩種方法Map.of(K k1, V v1)和Map.ofEntries()通過使用這兩種方法,您可以創建不可變條目的Map,例如
此方法已重載以創建最多10個鍵值對的映射,但是如果您需要更大的映射和更多映射,則應使用Map.ofEntries()方法。
順便說一句,您知道如何實現此功能嗎? 為何以前不可用? 如果查看JDK 9代碼或Javadoc,則會發現通過在Java Collection框架的關鍵接口(例如List,Set和Map)上添加靜態工廠方法來實現此功能。
在JDK 8之前這是不可能的,因為在接口上添加方法意味著破壞所有客戶端,并且接口上不允許使用靜態方法。 在Java 8上,事情發生了變化,在接口上引入了默認 方法和靜態方法 ,這為評估JDK API鋪平了道路。
我希望將來會有更多類似的約定,使使用JDK API更加容易。
同樣,使用這些工廠方法時,適用于使用不同集合的規則也將適用(正如您期望的那樣)。 因此,創建Set時不能傳遞重復元素,因為Set不允許重復 。
同樣,創建Map時不能傳遞重復鍵,因為Map不允許重復鍵。 如果這樣做,則將IllegalArgumentException
另外,您不能將null值傳遞給collection factory方法,如果這樣做,請為Java異常NullPointerException做好準備。
這就是如何在Java 9中創建不可變的列表,設置和映射的全部內容。 集合上的靜態方法確實使使用Java集合API變得更容易,至少現在它類似于Kotlin或Groovy提供的東西。 JDK 9充滿了這樣有用的功能,請繼續關注此博客上的更多此類文章。
您可能喜歡的其他Java和編程文章
- Java開發人員在2018年應該學習的10件事
- 20個Java開發人員必備庫
- Java程序員可以在2018年閱讀的20本書
- 十大Java 9教程和課程–最好的
- 5個免費的Spring和Spring啟動在線學習課程
- Java和Web開發人員的10個框架
- 簡單的Java 9新功能-概述(免費課程)
感謝您到目前為止閱讀本文。 如果您喜歡此Java 9功能,請與您的朋友和同事分享。 如果您有任何問題需要反饋,請留下注釋。
翻譯自: https://www.javacodegeeks.com/2018/02/java-9-example-factory-methods-collection-creating-unmodifiable-list-set-map.html
java 方法 示例
總結
以上是生活随笔為你收集整理的java 方法 示例_Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买新手机时要注意什么
- 下一篇: java 示例_功能Java示例 第3部