出于好奇,如果在java8风格中使用Comparator,即使用Lambda表达式比常规比较有任何优势,即
按ID排序的一种方法是: -
List sortedAcs = ac
.stream()
.sorted((a, b) -> Long.compare(a.getId(), b.getId())) //sorted by id here
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
其他方法可能是Java 8方式: -
List sortedAcs = ac
.stream()
.sorted(Comparator.comparingLong(AC::getId)) //sorted by id here
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
后一种方法(java-8 method reference)对前一种方法有任何性能上的好处吗?
请帮忙!!!
唯一不同的是完成你想要的方法所需的方法数量.Comparator.comparingLong将为ToLongFunction每个参数应用一个,然后委托给Long.compare.但这是一个JIT应该照顾的简单优化.我会说因为这个差异,可能会有一点点差异(直到JIT开始),但它会如此之小,以至于绝对可以忽略,不应该以任何方式推动你的决定.
另一方面,如果您确实看到任何差异,那么可能是您的测试代码是问题,而不是正在测量的代码.