如何在Java 8中將List轉換為Map?
假設有一個員工物件:
public class Employee { // member variables private int empId; private String empName; private int empAge; private String empDesignation; |
將這個員工物件放入LIst集合,如何轉為Map? 首先要明確Map的key是什麼?
1. 比如式樣員工物件的empId作為key,值是員工姓名:
// convert List<Employee> to Map<empId, empName> using Java 8 Streams Map<Integer, String> mapOfEmployees = employees.stream().collect( Collectors.toMap(e -> e.getEmpId(),e -> e.getEmpName())); |
2.Map的Key是empId,整個物件為Map的值:
// convert List<Employee> to Map<empId, empName> using Java 8 Streams Map<Integer, Employee> mapOfEmployees = employees.stream().collect( Collectors.toMap( e -> e.getEmpId(), e -> e)); |
3. 如果List中有重複的empId,對映到Map時,Key時不能重複的,如何解決?
預設情況時會拋重複異常,為了克服IllegalStateException重複鍵異常,我們可以簡單地新增一個
BinaryOperator方法到toMap()中,這也稱為合併功能,比如如果重複,可以取第一個元素: Map<Integer, String> mapOfEmployees = employees.stream().collect( Collectors.toMap( e -> e.getEmpId(), e -> e.getEmpName(), (e1, e2) -> e1 )); // Merge Function |
4. 將List轉換為Map - 使用TreeMap對鍵進行自然排序,或者指定的Map實現呢?
Map<Integer, String> mapOfEmployees = employees.stream().collect( Collectors.toMap( e -> e.getEmpId(), e -> e.getEmpName(), (e1, e2) -> e1 , // Merge Function TreeMap<Integer, String>::new)); // Map Supplier |
如果你的TreeMap實現需要加入比較器,將上面程式碼中TreeMap<Integer, String>::new替換成:
() -> new TreeMap<Integer, String>(new MyComparator())
相關文章
- Java中將 Map 轉換為 Spring MultiValueMapJavaSpring
- Java中將 int[] 陣列 轉換為 List(ArrayList)Java陣列
- 如何在Java中將double轉換為int?Java
- 如何在Java中將字串轉換為日期Java字串
- java json字串轉換為物件,轉換為listJavaJSON字串物件
- Java 中陣列轉換為 ListJava陣列
- Java中 set,list,array(集合與陣列)、Map相互轉換Java陣列
- Java List/Set/MapJava
- Java物件轉換成MapJava物件
- list轉map,使用java8,stream流Java
- 將java庫轉換為.net庫Java
- Java 中將 InputStream 轉換為 StreamJava
- java 將物件集合轉為欄位值的 listJava物件
- java中list、set和map 的區別(轉)Java
- 如何在Python中將語音轉換為文字Python
- java將IP地址轉換為數字以及逆向轉換Java
- java將map轉成bean工具JavaBean
- Java 中將 Short 轉換為 byte[]Java
- 更為簡單的JsonString資料與Map,List之間的轉換JSON
- Map 轉json資料,json資料轉換為MapJSON
- Java中List集合轉Map集合報錯:Duplicate keyJava
- 把Java陣列轉換為List時的注意事項Java陣列
- 將json字串轉換成list<T>JSON字串
- Java將地圖轉換為陣列[Snippet]Java地圖陣列
- 如何將Java 8 Calendar轉換為 LocalDateTime?JavaLDA
- Java如何將字串轉換為字元陣列?Java字串字元陣列
- 將Schema檔案轉換為Java檔案Java
- 如何在 Go 中將 []byte 轉換為 io.Reader?Go
- 如何在MySQL中使用CONVERT將字串轉換為數字MySql字串
- Java中將多個Map扁平化為單個MapJava
- java 基礎之 Set、Map、ListJava
- Java集合框架List,Map,Set等Java框架
- Java Map和List常見操作Java
- 如何在Mac上將 Spotify 音樂轉換為 MP3 格式?Mac
- Java8 中使用Stream 讓List 轉 Map使用總結Java
- Java8 中 List 轉 Map(Collectors.toMap) 使用技巧Java
- Java學習--list,set,Map介面使用Java
- Java中的Set, List, Map漫談Java