日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用JDK 8将收藏转换为地图

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用JDK 8将收藏转换为地图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我多次遇到這樣的情況,希望將多個對象存儲在Map中而不是Set或List中,因為將唯一標識信息的Map應用于對象有一些優勢 。 Java 8使用流和Collectors.toMap(…)方法使翻譯變得比以往更加容易。

使用Map而不是Set的一種有用情況是,當處理缺少或具有粗略的equals(Object)或hashCode()實現但具有唯一標識對象的字段的對象時。 在那些情況下,如果我無法添加或修復對象的基礎實現,則可以通過使用類(鍵)的唯一標識字段到類的實例化對象(值)的Map來獲得更好的唯一性保證。 當我更喜歡使用“ Map到List或“ Set時,更常見的情況是需要通過特定的唯一標識字段在集合中查找項目。 在唯一標識鍵上進行映射查找的速度快,而且通常比依賴迭代和將每個對象的調用與equals(Object)方法進行比較要快得多。

使用JDK 8,從現有的List或Set構造Map變得比以往更加容易。 為了說明這一點,將使用一個簡單的Book類。 這Book類沒有重載equals(Object)或hashCode()從Object類,因此是不恰當的類中使用Set或作為Map的關鍵。 但是,其getIsbn()方法返回一個國際標準書號 ,在本演示中,該書號被認為是唯一的。

Book.java

package dustin.examples.jdk8;/*** Represents a book, but does not override {@code equals(Object)}* or {@code hashCode()}.*/ public class Book {/** International Standard Book Number (ISBN-13). */final String isbn;/** Title of book. */final String title;/** Edition of book. */final int edition;/*** Constructor.** @param newIsbn International Standard Book Number (-13).* @param newTitle Title.* @param newEdition Edition.*/public Book(final String newIsbn, final String newTitle, final int newEdition){isbn = newIsbn;title = newTitle;edition = newEdition;}/*** Provide ISBN-13 identifier associated with this book.** @return ISBN-13 identifier.*/public String getIsbn(){return isbn;}/*** Provide title of this book.** @return Book's title.*/public String getTitle(){return title;}/*** Provide edition of this book.** @return Book's edition.*/public int getEdition(){return edition;}@Overridepublic String toString(){return title + " (Edition " + edition + ") - ISBN-13: " + isbn;} }

放置好該類之后,演示類CollectionToMapDemo演示了使用JDK 8將各種Java集合類型( Set , List甚至數組)轉換為Map是多么容易。

CollectionToMapDemo.java

package dustin.examples.jdk8;import static java.lang.System.out;import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors;/*** Demonstrates conversion of Java collections to Java Maps.*/ public class CollectionToMapDemo {/*** Multiple instances of Book, a class that lacks a proper* equals(Object) method, but for which its getIsbn() method* is assumed to return a unique identifier for each instance.*/private static final Book[] books;static{books = new Book[]{new Book("978-0-201-31005-4", "Effective Java", 1),new Book("978-0-321-35668-0", "Effective Java", 2),new Book("978-0-13-468599-1", "Effective Java", 3)};}/*** Convert provided array of Book instances to Map of each Book's ISBN to* that instance of the Book.* * @param booksArray Array of Book instances.* @return Map of each book's ISBN (key) to the book's full instance (value).*/private static Map<String, Book> convertArrayToMap(final Book[] booksArray){return Arrays.stream(books).collect(Collectors.toMap(Book::getIsbn, book -> book));}/*** Convert provided List of Book instances to Map of each Book's ISBN to* that instance of the Book.** @param booksList List of Book instances.* @return Map of each book's ISBN (key) to the book's full instance (value).*/private static Map<String, Book> convertListToMap(final List<Book> booksList){return booksList.stream().collect(Collectors.toMap(Book::getIsbn, book -> book));}/*** Convert provided Set of Book instances to Map of each Book's ISBN to* that instance of the Book.** @param booksSet Set of Book instances.* @return Map of each book's ISBN (key) to the book's full instance (value).*/private static Map<String, Book> convertSetToMap(final Set<Book> booksSet){return booksSet.stream().collect(Collectors.toMap(Book::getIsbn, book -> book));}public static void main(final String[] arguments){out.println("ARRAY->MAP:\n" + convertArrayToMap(books));final List<Book> booksList = Arrays.asList(books);out.println("LIST->MAP:\n" + convertListToMap(booksList));final Set<Book> booksSet= new HashSet<>(Arrays.stream(books).collect(Collectors.toSet()));out.println("SET->MAP:\n" + convertSetToMap(booksSet));} }

剛顯示的類列表中最重要的方法是convertArrayToMap(Book[]) , convertListToMap(List<Book>)和convertSetToMap(Set<Book>) 。 一旦訪問了基于基礎Set , List或array的流,所有這三種實現都是相同的。 在所有這三種情況下,僅需使用流的collect()方法之一(通常比順序迭代更可取的歸約運算符 ),然后將其傳遞給Collector接口的實現,該實現是通過預定義的toMap( )來自Collectors類的Collector 。

接下來顯示針對Book實例運行此演示類的輸出:

ARRAY->MAP: {978-0-201-31005-4=Effective Java (Edition 1) - ISBN-13: 978-0-201-31005-4, 978-0-321-35668-0=Effective Java (Edition 2) - ISBN-13: 978-0-321-35668-0, 978-0-13-468599-1=Effective Java (Edition 3) - ISBN-13: 978-0-13-468599-1} LIST->MAP: {978-0-201-31005-4=Effective Java (Edition 1) - ISBN-13: 978-0-201-31005-4, 978-0-321-35668-0=Effective Java (Edition 2) - ISBN-13: 978-0-321-35668-0, 978-0-13-468599-1=Effective Java (Edition 3) - ISBN-13: 978-0-13-468599-1} SET->MAP: {978-0-201-31005-4=Effective Java (Edition 1) - ISBN-13: 978-0-201-31005-4, 978-0-321-35668-0=Effective Java (Edition 2) - ISBN-13: 978-0-321-35668-0, 978-0-13-468599-1=Effective Java (Edition 3) - ISBN-13: 978-0-13-468599-1}

我遇到過幾種情況,在這種情況下,在唯一標識符Map中包含多個對象到這些對象的完整實例是有利的,但是在Set , List或數組中給了這些對象。 盡管在Java中將這些Set , List和數組轉換為Map從未特別困難,但在Java 8中進行這種轉換比以往更加容易。

翻譯自: https://www.javacodegeeks.com/2018/01/converting-collections-maps-jdk-8.html

總結

以上是生活随笔為你收集整理的使用JDK 8将收藏转换为地图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产成人va在线观看天堂 | 久久密桃| 国产成人无码精品亚洲 | 欧美视频一区二区三区四区 | 51国产偷自视频区视频 | 国产精品一区网站 | 小柔的淫辱日记(h | 激情五月五月婷婷 | 自拍偷在线精品自拍偷无码专区 | 污片免费网站 | 中文字幕日本人妻久久久免费 | 日本精品一区在线观看 | 亚洲人高潮女人毛茸茸 | 夜夜爽www | 欧美一级无毛 | 国产老熟女伦老熟妇露脸 | 一区二区三区中文字幕 | 欧美少妇视频 | 欧美被狂躁喷白浆精品 | 涩涩av | 毛片毛片毛片毛片毛片毛片毛片 | japanese国产 | 成人不卡av | 欧美日韩一区二区在线 | 日本理论视频 | 麻豆视屏 | 91嫩草网 | 黄色一节片 | 秋霞三区| 亚洲精品一品 | 在线观看日本 | 精品福利一区二区三区 | 成人影片在线免费观看 | 久久99精品久久久久久水蜜桃 | 欧美有码视频 | 91久久精品国产 | 亚洲综合免费观看高清完整版在线 | 中文字幕在线观看高清 | 色五夜| 午夜精品在线免费观看 | 男人视频网 | 樱桃成人精品视频在线播放 | 久久久黄色大片 | 黑人操中国女人视频 | 成人免费看片'在线观看 | 久久天堂av综合合色蜜桃网 | 天天看毛片| 日本真人做爰免费视频120秒 | 久久久精品国产免费爽爽爽 | 99热6这里只有精品 三级av在线免费观看 | 日韩av中文字幕在线 | 免费在线欧美 | 日本69视频 | japanese在线 | av电影在线播放 | av毛片网站| 国产私密视频 | 免费男女乱淫真视频免费播放 | 在线观看亚洲欧美 | 屁屁影院第一页 | 超黄网站在线观看 | 青青草视频成人 | 日韩在线视频免费观看 | 久久精品视频在线免费观看 | 日韩区在线| 欧美在线视频一区二区 | 欧美三日本三级少妇三级99观看视频 | 国产三级全黄裸体 | 亚洲免费视频网站 | 黑人性高潮 | 国产精品成人午夜视频 | 美女又爽又黄 | 免费观看成人鲁鲁鲁鲁鲁视频 | 精品少妇爆乳无码av无码专区 | 色悠悠视频 | 成人欧美一区二区三区黑人一 | 伊人久久大香线蕉 | 成人免费xxxxxx视频 | 亚洲一区小说 | 久久无码人妻丰满熟妇区毛片 | 国产一级影片 | 一区亚洲 | 男女插插插视频 | 久久免费在线 | 午夜精品在线 | 玉足女爽爽91| 69视频免费| 久久久18禁一区二区三区精品 | 精品少妇一二三区 | 国产色区 | 色一情一区二 | 色哟哟无码精品一区二区三区 | 欧美日韩国产成人精品 | 色婷婷久| 亚洲精品国产精品国自产网站按摩 | 人人亚洲 | www.欧美在线观看 | 九九久久久 | 欧美成人免费播放 |