2014-03-06 158 views
0
import java.util.Comparator; 
import java.util.Date; 

//Class that returns a string columnn in ascending order 

public class DateCompare implements Comparator { 

    int columnToSort; 
    DateCompare(int columnToSort) { 
     this.columnToSort = columnToSort; 
    } 

    //overriding compare method 
    public int compare(Object o1, Object o2) { 
     Date[] row1 = (Date[]) o1; 
     Date[] row2 = (Date[]) o2; 
     //compare the columns to sort 
     return row1[columnToSort].compareTo(row2[columnToSort]); 
    } 
} 

我的二維數組存儲手機的名稱及其製造日期。 朋友們,我做了一個名爲DateCompare的類,它根據存儲日期的列對二維數組進行排序。 這沒有給出所需的輸出。任何人都可以糾正這個問題,或者提供一個更好的替代解決方案,因爲我無法在任何網站上找到明確的答案? 在此先感謝!如何根據日期列升序對二維數組進行排序

輸入(例如):

Samsung     01/01/2014 
iphone     09/02/2006 
Motorola     16/06/2009 

輸出:

iphone     09/02/2006 
Motorola     16/06/2009 
Samsung     01/01/2014 
+1

我怎麼沒看到「三星」可能是在'日期[]'。向我們展示如何聲明變量以及如何使用比較器。並使用泛型:如果你想對香蕉進行分類,比較器應該實現'Comparator '。另外,你不應該使用數組來存儲信息。你應該有一個'List ',其中'Phone'是一個具有'name'和'date'字段的類。 –

+0

爲什麼不使用現有的jdk metods? java.util.Arrays.sort(Object [])對可比對象數組排序 – agad

+0

@agad:數組不具有可比性。要對它們進行排序,請使用Arrays.sort()並傳遞一個比較器。以上代碼是比較器。 –

回答

0

爲什麼一個二維數組,爲什麼不寫一個類來保存在一個結構化的方式你的數據?

public class MyTuple implements Comparable<Date> 
{ 
    String phone; 
    Date date; 

    @Override 
    public int compareTo(Date d) 
    { 
     return d.compareTo(this.date); 
    } 
} 

並使用List<MyTuple>而不是數組?我相信這是約阿希姆·紹爾在這個網站上教給我的那句「對象否認」這是其中:-)

乾杯一個很好的例子,

+0

這應該是一個評論,而不是一個答案。 –

+0

夥計,每個日期都有一個與之相關的電話,反之亦然。所以我希望他們的同行與他們在一起。 – user3383200

+1

@ user3383200:和?爲什麼使用Object []來存儲電話名稱和日期,而不是使用具有名稱和日期字段的Phone對象? Java是OO語言。使用對象。 –

相關問題