java8 將List轉換為Map
1 準備資料
Employee
物件:
package com.tao.springstarter.entity;
public class Employee {
/**
* 姓名
*/
private String name;
/**
* 年齡
*/
private Integer age;
/**
* 所在城市
*/
private String city;
/**
* 銷售額
*/
private Double sales;
public Employee (String name, Integer age, String city, Double sales) {
this.name = name;
this.age = age;
this.city = city;
this.sales = sales;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Double getSales() {
return sales;
}
public void setSales(Double sales) {
this.sales = sales;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", age=" + age +
", city='" + city + '\'' +
", sales=" + sales +
'}';
}
}
List<Employee>
物件:
List<Employee> employeeList = new ArrayList<>();
employeeList.add(new Employee("Alice", 23, "London", 1200.00));
employeeList.add(new Employee("Bob", 19, "London", 2000.00));
employeeList.add(new Employee("Charles", 25, "New York", 1650.00));
employeeList.add(new Employee("Dorothy", 20, "Hong Kong", 1200.00));
2 List
轉Map
2.1 Collectors.toMap
函式說明
List
轉Map
通常使用 Collectors.toMap
函式進行轉換。在Collectors
中,toMap
總共有三種形態:
2.1.1 第一種
public static <T, K, U>
Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper) {
return toMap(keyMapper, valueMapper, throwingMerger(), HashMap::new);
}
其中,
keyMapper
—— 指定map
中的鍵的獲取方法。valueMapper
—— 指定map
中的值的獲取方法。- 預設使用
HashMap
為Map
的實現類,當鍵值相同發生衝突時,丟擲異常。
栗子:
(1)
// key - name, value - Employee
Map<String, Employee> map1 = employeeList.stream()
.collect(toMap(Employee::getName, Function.identity()));
(2)
// key - name, value - age
Map<String, Integer> map2 = employeeList.stream()
.collect(toMap(Employee::getName, Employee::getAge));
2.1.2 第二種(提供解決key
衝突的策略)
public static <T, K, U>
Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper,
BinaryOperator<U> mergeFunction) {
return toMap(keyMapper, valueMapper, mergeFunction, HashMap::new);
}
其中,
keyMapper
—— 指定map
中的鍵的獲取方法。valueMapper
—— 指定map
中的值的獲取方法。mergeFunction
—— 指定key
衝突時,儲存value
的策略。- 預設使用
HashMap
為Map
的實現類。
栗子:
(1)key
衝突時,捨棄value
的舊值,使用value
的新值。
// key - city, value - name
Map<String, String> map3 = employeeList.stream()
.collect(toMap(Employee::getCity, Employee::getName, (oldValue, newValue) -> newValue));
2.1.3 第三種(提供指定Map
實現類的策略)
public static <T, K, U, M extends Map<K, U>>
Collector<T, ?, M> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper,
BinaryOperator<U> mergeFunction,
Supplier<M> mapSupplier) {
BiConsumer<M, T> accumulator
= (map, element) -> map.merge(keyMapper.apply(element),
valueMapper.apply(element), mergeFunction);
return new CollectorImpl<>(mapSupplier, accumulator, mapMerger(mergeFunction), CH_ID);
}
其中,
keyMapper
—— 指定map
中的鍵的獲取方法。valueMapper
—— 指定map
中的值的獲取方法。mergeFunction
—— 指定key
衝突時,儲存value
的策略。mapSupplier
—— 指定Map
的實現類。
栗子:
(1)使用LinkedHashMap
為Map
的實現類
// key - city, value - name, use LinkedHashMap
Map<String, String> map4 = employeeList.stream()
.collect(toMap(Employee::getCity, Employee::getName, (oldValue, newValue) -> newValue, LinkedHashMap::new));
相關推薦
java8 將List轉換為Map
1 準備資料 Employee物件: package com.tao.springstarter.entity; public class Employee { /** * 姓名
Java 三種將list轉換為map的方法詳解
在本文中,介紹三種將list轉換為map的方法: 1) 傳統方法 假設有某個類如下 class Movie { private Integer rank; private String description; public
Java8將list轉換為逗號隔開的字串
/** * @Description: 把list轉換為逗號分隔的字串 * * @param list * @Return: java.lang.String * @Author: XXX * @Date: 2018/11/15 */ public static String list
Java 8 – Convert List to Map(將 List 轉換為 Map)
幾個Java 8的例子展示怎樣將一個 物件的集合(List)放入一個Map中,並且展示怎樣處理多個重複keys的問題。 Hosting.java package com.mkyong.java8 public class Hosting { priva
java 將list轉換為map 的泛型通用方法
將list轉換為map 背景:最近使用比較多的mongodb,由於其缺乏表連線的查詢,導致我們經常需要將表資料查詢到記憶體中,然後進行匹配連線,組成需要的資料格式,匹配的方式通常是: list1中有list2需要的欄位,於是將list1轉換為map,遍歷list2,從ma
將List轉換為Json物件
將List轉換為Json物件,分別有兩個Json的jar包: 1、org.json.JSONArray包 2、net.sf.json.JSONArray包 兩個JSONArray分別實現方式: 1、org.json.JSONArray包 List al
處理將list 轉換為json,js時間顯示毫秒數問題
1.後臺將一個list轉換為json HttpServletResponse response = getResponse(); response.setContentType("text/json;charset=utf-8"); Prin
如何利用fastjson將JSON格式的字符串轉換為Map,再返回至前端成為js對象
數據結構 mem spring css 轉換 ring 註意 hash 結構 //註意,這裏的jsonStr是json格式的字符串,裏面如果遇到雙引號嵌套雙引號的,一般是嵌套的雙引號經過轉義 // \",假如有這樣的一個場景,這些字符串裏面有需要的css樣式的js對象
利用反射將xml轉換為List<Object>
反射 uppercase 效率 code varchar2 對象 測試的 trac getname 在將xml轉為實體類的時候,一直對於類型為Integer, date等的很難處理, 無法轉換, 但是後來我發現通過反射可以解決這一問題, 下面和大家分享一下 首先: 給
通過反射將Datetable轉換為泛型List<T>
tty eof urn tin CA ring nbsp AD 泛型集合 // 定義集合 List<T> ts = new List<T>(); // 獲得此模型的類型
快速將List物件、Map物件或者普通普通物件轉換成json字串
package test; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java
Java8-如何將List轉變為逗號分隔的字串
Converting a List to a String with all the values of the List comma separated in Java 8 is really straightforward. Let’s have a look how
Spark專案實戰-資料傾斜解決方案之將reduce join轉換為map join
一、reduce端join操作原理 二、map端join操作原理 三、適用場景 如果兩個RDD要進行join,其中一個RDD是比較小的。一個RDD是100萬資料,一個RDD是1萬資料。(一個RDD是1億資料,一個RDD是100萬資料) 其中一個RDD必須是比較
java 使用PropertyUtilsBean將泛型T轉換為Map
包名:commons-beanutils-1.9.3.jar 類名:org.apache.commons.beanutils.PropertyUtilsBean.PropertyUtilsBean() 轉換程式碼: private <T> Map<String, Obj
hibernate,將原生SQL執行的結果轉換為Map
核心:設定處理查詢結果的策略query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP),表示將結果轉換為Map型別預設結果是[“張三”,20],加了Transformers.ALIAS_TO_ENTITY_MAP之
Java 8 將Stream轉換為List
Java8Example1.java package com.mkyong.java8; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class Ja
將json 陣列轉換為Map 物件;[{}]此類字串 則返回的物件的map
public Map<String, Object> getMap(String data){ Map<String, Object> valueMap = new HashMap<String, Object>()
【Python】如何將generator轉換為list
使用 list() 函式。舉個例子:real_test_raw = ['第一段文字','這是第二段','第三段文字'] real_documents = [(jieba.cut(item_tex
Java用OpenOffice將word轉換為PDF
sts pre 成功 accep 存在 china ati url 基礎 本文在原文的基礎上有所修改,原文請參考: http://titanseason.iteye.com/blog/1471606 由於此blog不支持附件附件請到此處下載 http://my.oschin
C# 將 HTML 轉換為圖片或 PDF
ont gif completed 字段 sed pad cli 滾動條 lose 首先是把 HTML 轉換為圖片。 public partial class Form1 : Form { public Form1() {