从数组中查找最早的日期

时间:2014-10-02 12:57:42

标签: java arrays

因此,数组的格式为:

String[][] resultsArray = new String[][] { 
        { X, Y, "2014-10-22 12:00", Z},
        { X, Y, "2014-10-24 12:00", Z},
        { X, Y, "2014-10-26 12:00", Z},
}; 

从此我需要找回最早的日期。

我已经有一个循环用于循环遍历数组中每个项目的另一个目的,所以我打算重用它。它的格式为:

for (int i=0; i < resultsArray.length; i++) {
    result += resultsArray[i][1] + "text" + resultArray[i][2];
}

我目前的想法是在每次迭代时将数组中的日期值添加到新数组(dateArray)中,然后调用Arrays.sort(dateArray)并抓取dateArray[0]

然而,这看起来非常低效且笨拙,我怀疑我错过了一些简单的伎俩。

2 个答案:

答案 0 :(得分:4)

一个(简单)解决方案是将min值分配给数组中的第一个元素,然后从第二个元素到最后一个元素进行迭代,将每个值与min进行比较(由于您的日期格式,您可以使用词汇排序)。像,

String min = resultsArray[0][2];
for (int i=1; i < resultsArray.length; i++) {
    if (resultsArray[i][2].compareTo(min) < 0) {
        min = resultsArray[i][2];
    }
}
System.out.println(min);

输出

2014-10-22 12:00

答案 1 :(得分:2)

不像Elliott那样优雅,特别是因为resultsArray被sort方法改变了,但我认为在这里显示另一种选择

    String[][] resultsArray = new String[][] { 
            { "X2", "Y2", "2014-10-24 12:00", "Z2"},
            { "X1", "Y1", "2014-10-22 12:00", "Z1"},
            { "X0", "Y1", "2014-10-26 12:00", "Z0"},
    }; 
    Arrays.sort(resultsArray, new Comparator<String[]>(){
        @Override
        public int compare(String[] o1, String[] o2) {
            return o1[2].compareTo(o2[2]);
        }
    });
    System.out.println(resultsArray[0][2]);