Javaにおける時間配列の並べ替え問題

13112 ワード

Javaにおける時間配列の並べ替え問題
練習問題があります.
長さ9の日付配列を用意1970年から2000年の間のランダムな日付を使用して初期化します.この配列は、これらの日付の時間に従って昇順に並べ替えられます.例えば、1988-1-21 12:33:22は1978-4-21 19:07:23の前に並べられます.日付はもっと小さいですが、日付はもっと大きいです.
次の点に注意してください.
  • 日付のカスタムフォーマット
  • 文字列フォーマットの一貫性を保つ
  • 日付のソート方法
  • 解決方法:
  • SimpleDateFormat日付フォーマット
  • ParseException異常
  • を投げ出す
  • 現在時刻の時間原点からのミリ秒数をgettime()で取得し、ミリ秒数でソートし、時間の小さいものが後の
  • に並ぶ.
    参照コード:
    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();
    		}
    	}
    }