用到的包:
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
list排序(对象List按照Project对象中的Similarity元素排序):
List<Project> sortlist2 = sortlist.stream().sorted((u1, u2) ->
u1.getSimilarity().compareTo(u2.getSimilarity())).collect(Collectors.toList());
Map<String, List<Project>>根据 Project对象中某三个元素排序:
List<Map.Entry<String, List<Project>>> entryList = new ArrayList<Map.Entry<String, List<Project>>>(
map.entrySet());
Collections.sort(entryList, new MapValueComparatorSheetname());
Collections.sort(entryList, new MapValueComparatorTablename());
Collections.sort(entryList, new MapValueComparatorFrequency());
Iterator<Map.Entry<String, List<Project>>> iter = entryList.iterator();
Map.Entry<String, List<Project>> tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
/**
* 按照频次排序
* @author 36129
*
*/
public static class MapValueComparatorFrequency implements Comparator<Map.Entry<String, List<Project>>> {
@Override
public int compare(Entry<String, List<Project>> me1, Entry<String, List<Project>> me2) {
//按照从大到小的顺序排列,如果想正序 调换me1 me2的位置
Integer A=me2.getValue().get(0).getFrequency();
Integer B=me1.getValue().get(0).getFrequency();
return A.compareTo(B);
}
}
/**
* 按照文档名称排序
* @author 36129
*
*/
public static class MapValueComparatorTablename implements Comparator<Map.Entry<String, List<Project>>> {
@Override
public int compare(Entry<String, List<Project>> me1, Entry<String, List<Project>> me2) {
//按照从大到小的顺序排列,如果想正序 调换me1 me2的位置
String A=me2.getValue().get(0).getTablename();
String B=me1.getValue().get(0).getTablename();
return A.compareTo(B);
}
}
/**
* 按照sheet页名称排序
* @author 36129
*
*/
public static class MapValueComparatorSheetname implements Comparator<Map.Entry<String, List<Project>>> {
@Override
public int compare(Entry<String, List<Project>> me1, Entry<String, List<Project>> me2) {
//按照从大到小的顺序排列,如果想正序 调换me1 me2的位置
String A=me2.getValue().get(0).getSheetname();
String B=me1.getValue().get(0).getSheetname();
return A.compareTo(B);
}
}