如何在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 中陣列轉換為 ListJava陣列
- Java物件轉換成MapJava物件
- list轉map,使用java8,stream流Java
- Java 中將 Short 轉換為 byte[]Java
- Java 中將 InputStream 轉換為 StreamJava
- java 將物件集合轉為欄位值的 listJava物件
- 如何在Python中將語音轉換為文字Python
- java將IP地址轉換為數字以及逆向轉換Java
- java將map轉成bean工具JavaBean
- 如何在 Go 中將 []byte 轉換為 io.Reader?Go
- 如何將Java 8 Calendar轉換為 LocalDateTime?JavaLDA
- Java中List集合轉Map集合報錯:Duplicate keyJava
- 如何在MySQL中使用CONVERT將字串轉換為數字MySql字串
- Java8 中 List 轉 Map(Collectors.toMap) 使用技巧Java
- Java如何將字串轉換為字元陣列?Java字串字元陣列
- Java將地圖轉換為陣列[Snippet]Java地圖陣列
- Java8 中使用Stream 讓List 轉 Map使用總結Java
- Java Map和List常見操作Java
- 如何在Mac上將 Spotify 音樂轉換為 MP3 格式?Mac
- Java中將多個Map扁平化為單個MapJava
- Java 將Markdown檔案轉換為Word和PDF文件Java
- Java中將 Jackson JsonNode 轉換為型別化集合JavaJSON型別
- Java中將電話號碼轉換為數字Java
- Java中將Excel轉換為JSON的兩種方法JavaExcelJSON
- 劍指offer(Java版)--將字串轉換為整數Java字串
- list與字串轉換字串
- List<實體類>轉換成map 一個鍵對應多個值
- 將List物件列表轉為樹形結構物件
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- Map轉實體類或List陣列陣列
- Java map轉JSONJavaJSON
- Java中將XML轉換為PDF的兩種辦法JavaXML
- 使用C#,VB和Java將PDF轉換為DOC / DOCXJava
- pandas將Excel的所有行轉化為列表listExcel