Java - Java8中使用Stream对Map排序效率问题
- 普通项目中时间测试
- SpringBoot中时间测试
- Collectors.toMap(1,2,3,4)详解
一:普通项目中时间测试
1> 测试用例
/**
* @author XuX
* @date 2021/7/26 21:19
* @desc
*/
public class T01_SortMap {
public static void main(String[] args) {
test01();
}
public static void test01(){
Map<String, Integer> map = new HashMap<>();
map.put("aLUCY", 1);
map.put("alUCY", 5);
map.put("BLUCY", 8);
map.put("cLUCY", 2);
map.put("DLUCY", 7);
long start1 = System.nanoTime();
// 依据value降序
HashMap<String, Integer> map3 = map.entrySet().stream().sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).
collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(o, n) -> o,
LinkedHashMap::new
));
long end1 = System.nanoTime();
System.out.println((end1 - start1) / 1000000.0 + "ms");
System.out.println(map3);
long start = System.nanoTime();
// 依据key降序
HashMap<String, Integer> map2 = map.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())).
collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(o, n) -> o,
LinkedHashMap::new
));
long end = System.nanoTime();
System.out.println((end - start) / 1000000.0 + "ms");
System.out.println(map2);
map.put("Casdas", 7);
long start2 = System.