的排序算法,是稳定的nlogn复杂度,表现效果比快排要好。
异常的原因是实现的compare排序算法不够严谨导致
,需要对非法的比较对象进行更严谨的判断;
(不严谨写法,违反了该条规则)
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Random; import org.apache.commons.lang3.StringUtils; public class Test { public static void sortMessage(List
list) { Collections.sort(list, new Comparator
() { public int compare(String arg1, String arg2) { / * 不严谨写法 */ // if(StringUtils.isBlank(arg1) || StringUtils.isBlank(arg2)) { // return 0; // } / * 优化后写法 */ if(StringUtils.isBlank(arg1) ) { if(StringUtils.isBlank(arg2)) { return 0; }else { return -1; } }else if(StringUtils.isBlank(arg2)){ return 1; } return arg1.compareTo(arg2); } }); } public static void main(String[] args) throws InterruptedException { List
list = new ArrayList
(); Random random = new Random(); for(int i=10000;i>0;i--) { if(i%5000 != 0) { list.add(random.nextInt(1000)+""); }else { list.add(""); } } sortMessage(list); } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215355.html原文链接:https://javaforall.net
