我有陣列的List
其中每個陣列(array[4]
)的第五元素是Date
類型的,並且每個陣列(array[3]
)的第四個要素是String
類型。我正在嘗試根據日期對字符串進行排序List
。我嘗試過使用Collections.sort()
使用自定義Comparator
,但沒有成功:排序列表
List <Object[]> execute(List <Object[]> resultList){
Collections.sort(resultList, new Comparator<Object[]>() {
public int compare(Object[] array, Object[] otherArray) {
int dateComparison = array[4].compareTo(otherArray[4]);
return dateComparison == 0 ? array[3].compareTo(otherArray[3]) : dateComparison;
}
});
return resultList;
}
輸入
02.02.2017 10:00 B
02.02.2017 09:00 A
01.02.2017 18:00 AC
01.02.2017 16:00 AB
02.02.2017 11:00 C
01.02.2017 13:00 AA
02.02.2017 12:00 D
01.02.2017 21:00 AD
輸出應該看起來像 - >
01.02.2017 13:00 AA
01.02.2017 16:00 AB
01.02.2017 18:00 AC
01.02.2017 21:00 AD
02.02.2017 09:00 A
02.02.2017 10:00 B
02.02.2017 11:00 C
02.02.2017 12:00 D
EDIT1
我實現了一個簡單的例子:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
public class Comperable {
public static void main(String[] args) {
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Object[]> resultList = new ArrayList<Object[]>();
Object[] array1 = { dateFormat.parse("2017-02-25 16:10:00.0"), "C" };
Object[] array2 = { dateFormat.parse("2017-02-20 16:50:00.0"), "CB" };
Object[] array3 = { dateFormat.parse("2017-02-19 19:42:00.0"), "AB" };
Object[] array4 = { dateFormat.parse("2017-02-20 19:46:00.0"), "BA" };
Object[] array5 = { dateFormat.parse("2017-02-16 19:33:58.0"), "ZC" };
Object[] array6 = { dateFormat.parse("2017-02-16 19:45:10.0"), "A" };
Object[] array7 = { dateFormat.parse("2017-02-16 20:47:48.0"), "B" };
resultList.add(array1);
resultList.add(array2);
resultList.add(array3);
resultList.add(array4);
resultList.add(array5);
resultList.add(array6);
resultList.add(array7);
Collections.sort(resultList, new Comparator<Object[]>() {
public int compare(Object[] array, Object[] otherArray) {
int dateComparison = (((Date) array[0]).compareTo((Date) otherArray[0]));
return dateComparison == 0 ? ((String) array[1]).compareTo((String) otherArray[1]) : dateComparison;
}
});
for (int i = 0; i <= resultList.size() - 1; i++) {
Object[] row = resultList.get(i);
System.out.println("Date: " + row[0] + " name: " + row[1]);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
好吧,考慮到你的代碼,你正在與array [4]和_then_ array [3] – njzk2
進行比較,你期望'array [4] .compareTo(otherArray [4])做什麼?這2個「對象」應該是什麼比較? – njzk2
我不明白你的問題。也許包括所需的輸入和輸出將有助於 –