1 1 public static List sort(ListtoBeComparedStringList, String standardString){2 2 List listAfterSort = new ArrayList();//定义待比较字符串List的相似度的List
List listSemblance = new ArrayList();if(toBeComparedStringList.size()<=0){
System.out.println("出错,待比较的字符串为空");return null;
}//初始化相似度的List
for(int i=0;i
listSemblance.add(getSemblance(toBeComparedStringList.get(i),standardString));
}while(true){//循环的终止条件,当相似度的List里面全是Integer的最大值就跳出循环
if((Integer)Collections.min(listSemblance).intValue() ==Integer.MAX_VALUE.intValue()){break;
}else{//取到相似度最小的位置
Integer minIndex =getMinIndex(listSemblance);//并记录初始的相似度
Integer origSemblance =listSemblance.get(minIndex);//将这个位置的相似度置为Integer的最大值
listSemblance.set(minIndex, Integer.MAX_VALUE);if(origSemblance.intValue() !=listSemblance.get(getMinIndex(listSemblance)).intValue()){//如果相似度List中没有和初始相似度相同的//则取出待排序List对应位置的字符串
String minString =toBeComparedStringList.get(minIndex);
listAfterSort.add(minString);
}else{//如果相似度List中还有有和初始相似度相同的 则还原该位置相似度的初始值
listSemblance.set(minIndex, origSemblance);
List tempList = new ArrayList();//将相似度List中的所有该相似度的位置记下,将这些位置的相似度置为Integer的最大值,并取出待排序List中对应的String
for(int i=0;i
listSemblance.set(i, Integer.MAX_VALUE);
tempList.add(toBeComparedStringList.get(i));
}
}//将相似度相同的临时的List进行排序
Collections.sort(tempList, comparator);
listAfterSort.addAll(tempList);
}
}
}returnlistAfterSort;
}