1 將List轉成map
list.stream().collect(Collectors.toMap(xxx)): list.stream():把list轉成流,list.stream().collect():把流轉回list.
示例:
List<JSONObject> candidates = projectMapper.getCandidateList();
//candidates 是從數據庫里查出來結果集,包含,eventId,suppNm,rank三個字段,現在把eventId當key,suppNm,rank轉成jsonobject當value.
Map<String, List<JSONObject>> candidatesMap = candidates.stream().collect(Collectors.toMap(w -> w.getString("eventId"), w -> { ArrayList<JSONObject> candidateList = new ArrayList<>(); JSONObject jsonObject = new JSONObject(); jsonObject.put("suppNm",w.get("suppNm")); jsonObject.put("rank",w.get("rank")); candidateList.add(jsonObject); return candidateList; },
//指定key重復的處理方式
(List<JSONObject> oldValue,List<JSONObject> newValue)->{ oldValue.addAll(newValue); return oldValue; }));
2 對list<T>中的泛型數據做處理
List<JSONObject> list = searchMapper.categorySelect(); //list是查詢的結果集,包含firstCode,firstName字段 List<JSONObject> parent_id = list.stream().map(e -> { 將list里的JSONObject類型取出來做處理,仍舊映射成JSONObject類型,也可以取出一個字段映射成string類型 JSONObject jsonObject = new JSONObject(); jsonObject.put("code",e.get("firstCode")); jsonObject.put("name",e.get("firstName")); return jsonObject; }).distinct().collect(Collectors.toList());
distinct()是去重,還有filter()過濾,limit()限制條數,sort()排序,forEach()循環處理list每條數據 等方法.
還可以組合使用
list.stream().filter(x1 ->x1過濾條件).map(e -> {})這樣符合filter過濾條件的數據才會映射