List里面的hashMap根据某个Key的值进行排序
我们的集合常常需要排序。我在开发的时候动态字段查询,有字段含义,要根据字段含义分类,并且排序,开始一直纠结于数据库加到一个字段排序值。后面仔细想加多工作量,然后换了一个思路。直接集合排序,因为Key值是String,所以用hashCode进行排序。代码如下:
知识点(根据name的值进行排序)
for (int i = 0; i < fields.length; i++) {
Map<String, Object> fvMap = new HashMap<>();
fvMap.put("name", meanings[i]);
fvMap.put("value", paramValueMap.get(fields[i]));
fvMap.put("unit", companys[i]);
subVlaueList.add(fvMap);
}
Collections.sort(subVlaueList, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Integer name1 = Integer.valueOf(o1.get("name").toString().hashCode()) ;//name1是从你list里面拿出来的一个
Integer name2 = Integer.valueOf(o2.get("name").toString().hashCode()) ; //name1是从你list里面拿出来的第二个name
return name1.compareTo(name2);
}
});