Java jdk8 排序

jdk 8 Lambda 表达式的基本排序

1.获取对象 解析json 

ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(staticDBFeatureBatchSearchUrl,
                    params, JSONObject.class);

            JSONObject result = responseEntity.getBody();

            JSONArray responsesArray = result.getJSONArray("responses");

            List<String> featureIdList = new ArrayList<>();
            List<FaceSortVo> faceSortVoList = new ArrayList<>();

            FaceSortVo faceSortVo = null;

            for (Object object : responsesArray) {
                JSONObject response = (JSONObject) object;
                JSONArray feature_results = response.getJSONArray("feature_results");
                for (Object feature_result : feature_results) {
                    JSONObject results = (JSONObject) feature_result;
                    JSONArray resultsArray = results.getJSONArray("results");
                    for (Object resultArray : resultsArray) {
                        JSONObject itemObject = (JSONObject) resultArray;
                        JSONObject item = itemObject.getJSONObject("item");
                        BigDecimal score = itemObject.getBigDecimal("score");

                        faceSortVo = new FaceSortVo();
                        faceSortVo.setScore(score);
                        faceSortVo.setFeatureId(item.getString("id"));
                        faceSortVo.setImageUrl(item.getString("image_id"));
                        faceSortVoList.add(faceSortVo);
                    }
                }
            }

2.排序

// 使用Lambda表达式的基本排序
// 反转排序
Comparator<FaceSortVo> comparator = (f1, f2) -> f1.getScore().compareTo(f2.getScore());
faceSortVoList.sort(comparator.reversed());

3.提取前四条

int i = 0;
            int count = 0;
            Map<String, FaceSortVo> faceSortMap = new HashMap<>();

            if (faceSortVoList.size() >= 4) {
                count = 4;
            } else {
                count = faceSortVoList.size();
            }

            for (FaceSortVo faceSort : faceSortVoList) {
                if (i >= count) {
                    break;
                }
                featureIdList.add(faceSort.getFeatureId());
                faceSortMap.put(faceSort.getFeatureId(), faceSort);

                i++;
            }

猜你喜欢

转载自blog.csdn.net/m0_37598953/article/details/82381944