我有一个包含以下数据的String[][]数组。我想对这个数组进行排序
data[][1]中的整数值,data[][2]列中的日期。输出应该是2D字符串数组。字符串数据={{“文本”、"5“、”2011年2月4日(星期五) 13:17:31格林尼治时间“}、{”文本“、"5”、“2011年2月4日星期五”14:24:47格林尼治时间}、{“文本”、"8“、”星期五“、”2014年9月5日20:43:57格林尼治时间“}、{”文本“、"4”、“星期五”、2013年11月8日16:35:34格林尼治时间}、{“文本”"4",“星期五,2014年8月15日10:00:16格林尼治时间”},{“文本”,"4",“星期五,2014年5月16日15:03:08格林尼治时间”},{“文本”,"6",“星期五,2014年1月31日13:12:06格林尼治时间”},{“文本”,"4",“2014年8月4日”,09:14:36格林尼治时间},{“文本”,"4","Mon“,2014年9月8日03:55:54格林尼治时间},{“文本”、"1“、”星期一,2014年9月8日12:53:09格林尼治时间“};
发布于 2014-09-11 13:25:40
我希望对整数排序不会成为问题,我将向您展示如何按照日期进行排序
Arrays.sort(data, new Comparator<String[]>() { // sort the array
SimpleDateFormat f = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
// SimpleDateFormat to parse the String Date
@Override
public int compare(String[] o1, String[] o2) {
try {
return f.parse(o1[2]).compareTo(f.parse(o2[2]));
} catch (ParseException e) {
e.printStackTrace();
}
return -1;
}
});
for(int i = 0; i < data.length; i++){ // display the result
for(int j = 0; j < data[i].length; j++)
{
System.out.print(data[i][j]);
if(j < data[i].length - 1) System.out.print(" ");
}
System.out.println();
}发布于 2014-09-11 10:55:50
只需使用Arrays.asList将数组封装到列表中即可。
http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList%28T...%29
现在使用Collections.sort并创建一个自定义Comparator,它从列表中的数组中读取数据并进行相应的排序。
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort%28java.util.List,%20java.util.Comparator%29
首先对整数进行比较,如果整数相同,然后将字符串解析为Date并比较两个Date对象。
https://stackoverflow.com/questions/25785594
复制相似问题