2014-03-06 188 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语言。使用对象。 –

相关问题