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++;
}