List.stream()常用方法


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過濾條件的數據才會映射


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM