根据List> 按List<>中某值中从大到小排序
数据准备
List<List<String>> lists = new ArrayList<>();
List<String> list = new ArrayList<>();
List<String> list2 = new ArrayList<>();
List<String> list3 = new ArrayList<>();
list.add("李一");
list.add("2");
list2.add("李二");
list2.add("4");
list3.add("李三");
list3.add("8");
lists.add(list);
lists.add(list2);
lists.add(list3);
开始排序
import java.util.List;
import java.util.stream.Collectors;
public class ListSortUtils {
/**
* 根据List> 按某值中从大到小排序
* @param lists
* @return
*/
public static List<List<String>> sortListUtils(List<List<String>> lists) {
lists = lists.stream().sorted((o1, o2) -> {
for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
// o1和o2调换位置就是从小到大排序
// 02.get(1)获取列表中index为1的值
int c = Integer.valueOf(o2.get(1)).compareTo(Integer.valueOf(o1.get(1)));
if (c != 0) {
return c;
}
}
return Integer.compare(o1.size(), o2.size());
}).collect(Collectors.toList());
return lists;
}
}
直接调用这个工具类,或者将里面的内容写到自己的代码里也可以
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapSortUtils {
/**
* 根据map中的value由大到小进行排序
*/
public static <K extends Comparable,V extends Comparable> Map<K, V> sortMapByValues(Map<K, V> map) {
//需要用LinkedHashMap排序
HashMap<K, V> finalMap = new LinkedHashMap<>();
//取出map键值对Entry,然后按照值排序,最后组成一个新的列表集合
List<Map.Entry<K, V>> list = map.entrySet()
.stream()
//sorted((p2,p1)表示由大到小排序,sorted((p1,p2)表示由小到大排序
.sorted((p2, p1) -> p1.getValue().compareTo(p2.getValue()))
.collect(Collectors.toList());
//遍历集合,将排好序的键值对Entry放入新的map并返回。
list.forEach(ele -> finalMap.put(ele.getKey(), ele.getValue()));
return finalMap;
}
}
直接调用这个工具类就可以了