1. 封装排序方法
//map集合根据value从大到小排序
public static List<String> sortMapByValue(Map<String, Integer> map) {
int size = map.size();
//通过map.entrySet()将map转换为"1.B.1.e=78"形式的list集合
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(size);
list.addAll(map.entrySet());
List<String> keys = list.stream()
.sorted(Comparator.comparing(Map.Entry<String, Integer>::getValue).reversed())
.map(Map.Entry<String, Integer>::getKey)
.collect(Collectors.toList());
return keys;
}
2. 调用方法实现排序
/**
* 获取最大或最小投票数map
* @param map
* @return
*/
public List<GVotingMinAndMax> getMaxAndMinMap(GVotingInfo gVotingInfo) {
Map<String, Integer> votingMap = new HashMap<String,Integer>();
votingMap.put("总裁办", gVotingInfo.getCeoOffice());
votingMap.put("营销中心", gVotingInfo.getMarkCenter());
votingMap.put("产品与资源管理中心", gVotingInfo.getProductResource());
votingMap.put("操作中心", gVotingInfo.getOperatingCenter());
votingMap.put("财务中心", gVotingInfo.getFinanceCenter());
votingMap.put("人力行政中心", gVotingInfo.getHrCenter());
votingMap.put("组织发展部", gVotingInfo.getOrgaDevelopment());
votingMap.put("法务部", gVotingInfo.getLegalDepartmen());
votingMap.put("数据与信息中心", gVotingInfo.getItCenter());
votingMap.put("投资管理部", gVotingInfo.getInvestManageDepa());
votingMap.put("签证中心", gVotingInfo.getVisaCenter());
votingMap.put("服务质量管理部", gVotingInfo.getQualityServiceDepa());
votingMap.put("结算中心", gVotingInfo.getSettlementCenter());
votingMap.put("美惠", gVotingInfo.getMhome());
List<String> keys = sortMapByValue(votingMap);
String key1 = keys.get(0);
String key2 = keys.get(13);
Integer value1 = (Integer) votingMap.get(key1);
Integer value2 = (Integer) votingMap.get(key2);
/*Map<Integer, String> newMap = new LinkedHashMap<Integer, String>();//LinkedHashMap有序存储已排好序的键值对
newMap.put(value1,key1);
newMap.put(value2,key2);*/
List<GVotingMinAndMax> list = new ArrayList<>();
GVotingMinAndMax gVotingMinAndMax = new GVotingMinAndMax();
gVotingMinAndMax.setMaxVot(key1);
gVotingMinAndMax.setMaxScore(value1);
gVotingMinAndMax.setMinVot(key2);
gVotingMinAndMax.setMinScore(value2);
list.add(gVotingMinAndMax);
/*for(GVotingMinAndMax model:list) {
System.out.println("-----------------------"+model.toString());
}*/
return list;
}