日期:2014-05-18  浏览次数:20725 次

求高手指点,java
行字符串值排序,而不是按日期排序
比如1-Jan-03
        1-Feb-03
        1-Dec-02应该改为1-Feb-03
                        1-Jan-03
                        1-Dec-02
这个小程序应该怎么写


------解决方案--------------------
实现Comparator接口吧!自定义一个比较器,想怎么比较就这么比较!
------解决方案--------------------
其实人家就是想问比较器怎么写。
但是我真看不住来你这“行字符串值”是啥意思。
------解决方案--------------------
String[] a ={"1-Jan-03","1-Feb-03","1-Dec-02"};
for(int i = 0;i<a.length;i++){
for(int j = i;j<a.length-i-1;j++){
String b;
if(a[j].compareTo(a[j+1]) > 0){
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
}
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
}

是这种吗?
------解决方案--------------------
你可以把他转换成日期再排序呀!

final DateFormat df = new SimpleDateFormat("d-MMM-yy", Locale.US);
String[] str = {"1-Jan-03","1-Feb-03","1-Dec-02"};
Arrays.sort(str,new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if(s1 != null && s2 != null){
try {
Date d1 = df.parse(s1);
Date d2 = df.parse(s2);
return -d1.compareTo(d2);
} catch (ParseException e) {
e.printStackTrace();
}
}
return 0;
}
});