日期:2014-05-20 浏览次数:20937 次
package com.zf.thread;
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
public class Thread4 {
public static void main(String[] args) {
String[] strs = new String[]
{"fdasfa","fda" ,"321","432","222"
,"343","5k321","643jk432" ,"fsds"};
LinkedList<String> linkedList = new LinkedList<String>();
int numeralSize = 0 ; //记录数字的个数
for (String s : strs) {
if(s.matches("\\d+")){
linkedList.addFirst(s); //数字放前
numeralSize++;
}else{
linkedList.addLast(s); //字符串放后
}
}
strs = linkedList.toArray(new String[linkedList.size()]);
Arrays.sort(strs, 0 , numeralSize, new NumeralComparator());
Arrays.sort(strs, numeralSize , strs.length, new StringComparator());
//排序后
for (String string : strs) {
System.out.println(string);
}
}
}
/**
* 数字类型比较器
* @author zhoufeng
*/
class NumeralComparator implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return Integer.valueOf(o1) - Integer.valueOf(o2);
}
}
/**
* String类型比较器
* @author zhoufeng
*/
class StringComparator implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
}