中英文网站制作,wordpress可视化插件,做网站推销自己的产品这可行吗,网站建设推广费计入什么科目jdk 8 时区 转换我多次遇到这样的情况#xff0c;希望将多个对象存储在Map中而不是Set或List中#xff0c;因为将唯一标识信息的Map应用于对象有一些优势 。 Java 8通过流和Collectors.toMap#xff08;…#xff09;方法使翻译变得比以往更加容易。 使用Map而不是Set的一… jdk 8 时区 转换 我多次遇到这样的情况希望将多个对象存储在Map中而不是Set或List中因为将唯一标识信息的Map应用于对象有一些优势 。 Java 8通过流和Collectors.toMap…方法使翻译变得比以往更加容易。 使用Map而不是Set的一种有用情况是当处理缺少或具有粗略的equalsObject或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 Books title.*/public String getTitle(){return title;}/*** Provide edition of this book.** return Books 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 Books ISBN to* that instance of the Book.* * param booksArray Array of Book instances.* return Map of each books ISBN (key) to the books full instance (value).*/private static MapString, 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 Books ISBN to* that instance of the Book.** param booksList List of Book instances.* return Map of each books ISBN (key) to the books full instance (value).*/private static MapString, Book convertListToMap(final ListBook booksList){return booksList.stream().collect(Collectors.toMap(Book::getIsbn, book - book));}/*** Convert provided Set of Book instances to Map of each Books ISBN to* that instance of the Book.** param booksSet Set of Book instances.* return Map of each books ISBN (key) to the books full instance (value).*/private static MapString, Book convertSetToMap(final SetBook 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 ListBook booksList Arrays.asList(books);out.println(LIST-MAP:\n convertListToMap(booksList));final SetBook booksSet new HashSet(Arrays.stream(books).collect(Collectors.toSet()));out.println(SET-MAP:\n convertSetToMap(booksSet));}
} 刚显示的类列表中最重要的方法是convertArrayToMap(Book[]) convertListToMap(ListBook)和convertSetToMap(SetBook) 。 一旦访问了基于基础Set List或array的流所有这三种实现都是相同的。 在这三种情况下仅需使用流的collect方法之一通常比顺序迭代更可取的归约运算符 然后将其传递给通过预定义的toMap 提供的Collector接口的实现。 来自Collectors类的Collector 。 接下来显示针对Book实例运行此演示类的输出 ARRAY-MAP:
{978-0-201-31005-4Effective Java (Edition 1) - ISBN-13: 978-0-201-31005-4, 978-0-321-35668-0Effective Java (Edition 2) - ISBN-13: 978-0-321-35668-0, 978-0-13-468599-1Effective Java (Edition 3) - ISBN-13: 978-0-13-468599-1}
LIST-MAP:
{978-0-201-31005-4Effective Java (Edition 1) - ISBN-13: 978-0-201-31005-4, 978-0-321-35668-0Effective Java (Edition 2) - ISBN-13: 978-0-321-35668-0, 978-0-13-468599-1Effective Java (Edition 3) - ISBN-13: 978-0-13-468599-1}
SET-MAP:
{978-0-201-31005-4Effective Java (Edition 1) - ISBN-13: 978-0-201-31005-4, 978-0-321-35668-0Effective Java (Edition 2) - ISBN-13: 978-0-321-35668-0, 978-0-13-468599-1Effective 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.htmljdk 8 时区 转换