Javaにおける時間配列の並べ替え問題
13112 ワード
Javaにおける時間配列の並べ替え問題
練習問題があります.
長さ9の日付配列を用意1970年から2000年の間のランダムな日付を使用して初期化します.この配列は、これらの日付の時間に従って昇順に並べ替えられます.例えば、1988-1-21 12:33:22は1978-4-21 19:07:23の前に並べられます.日付はもっと小さいですが、日付はもっと大きいです.
次の点に注意してください.日付のカスタムフォーマット 文字列フォーマットの一貫性を保つ 日付のソート方法 解決方法: SimpleDateFormat日付フォーマット ParseException異常 を投げ出す現在時刻の時間原点からのミリ秒数をgettime()で取得し、ミリ秒数でソートし、時間の小さいものが後の に並ぶ.
参照コード:
練習問題があります.
長さ9の日付配列を用意1970年から2000年の間のランダムな日付を使用して初期化します.この配列は、これらの日付の時間に従って昇順に並べ替えられます.例えば、1988-1-21 12:33:22は1978-4-21 19:07:23の前に並べられます.日付はもっと小さいですが、日付はもっと大きいです.
次の点に注意してください.
参照コード:
package j2se;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class RiQiPaiXu {
public static void main(String[] args) {
// 9
// 1970 -2000
//
// 1988-1-21 12:33:22 1978-4-21 19:07:23 , ,
Date[] date = new Date[9];// 9
int count = 0;//
String str1 = "1970-1-1 00:00:00";
String str2 = "2000-12-31 23:59:59";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//
try {
Date startDate = sdf.parse(str1);
Date endDate = sdf.parse(str2);
System.out.println(" :");
for (int i = 0; count < date.length; i++) {
long randomTime = (long)(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));//
date[count++] = new Date(randomTime);
String dateStr = sdf.format(date[i]);//
System.out.print(dateStr + "\t");//
// 2
if (i % 3 == 2) {
System.out.println();
}
}
System.out.println(" :");
for(int i = 0; i < date.length - 1; i++) {
for (int j = i + 1; j < date.length; j++) {
if (date[i].getTime() < date[j].getTime()) {
Date temp = date[i];
date[i] = date[j];
date[j] = temp;
}
}
}
//
for (int i = 0; i < date.length; i++) {
String dateStr = sdf.format(date[i]);
System.out.print(dateStr + "\t");
if (i % 3 == 2) {
System.out.println();
}
}
} catch(ParseException e){
e.printStackTrace();
}
}
}