これは正確にThisと重複していますが、1つのトリッキーな違いがあります。 私は、Webサービスからの値で更新される 'LOBServiceRequestDetails'型のArrayListを持っています。 LOBServiceRequestDetailsのvarriablesのいくつかは、以下の通りですArrayListを文字列形式の日付に従って並べ替える方法は?
- のString#は
- のString#のCreationDate AGENTID(DD/MM/YYYYのhh:mm:ss形式)
は私が応じ、このリストをソートしたいのto creationDate。私が持っている1つの方法は、LOBServiceRequestDetailsモデルクラスでComparableを実装し、compareToメソッドをオーバーライドすることですが、いくつかの問題が原因でこのクラスを変更することはできません。だから私は、次のようにCollection.sortを使用しました:
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Collections.sort(lOBServiceRequestDetailsList, new Comparator<LOBServiceRequestDetails>() {
public int compare(LOBServiceRequestDetails o1, LOBServiceRequestDetails o2) {
if (o1.getCreationDate() == null || o2.getCreationDate() == null)
return 0;
try{
return sdf.parse(o1.getCreationDate()).compareTo(sdf.parse(o2.getCreationDate()));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
しかし、これは期待どおりに動作していません。どんな助けもありがとうございます。
[LOBServiceRequestDetails [CreationDateプロパティ= 22/05/2017 10時31分20秒、agentIdが= AG11]、LOBServiceRequestDetails [CreationDateプロパティ= 7月2日/ 2017年午前11時10分20秒:出力予想
、agentId = ag12]、LOBServiceRequestDetails [creationDate = 06/12/2016 12:51:20、agentId = ag13]、LOBServiceRequestDetails [creationDate = 17/12/2015 06:44:20、agentId = ag14]]
実際の出力:
[LOBServiceRequestDetails [CreationDateプロパティ= 6月12日/ 2016年11時10分20秒、agentIdが= AG11]、LOBServiceRequestDetails [=/2015分の12 17 6時44分20秒、agentIdが= AG12]、LOBServiceRequestDetails CreationDateプロパティ[あなたが使用しているのCreationDate = 7月2日/ 2017年11時10分20秒、agentIdが= AG13]、LOBServiceRequestDetails [のCreationDate = 22/05/2017年10時31分20秒、agentIdが= AG14]]
正確に何を働いていませんか? –
あなたはcompareToの両側でo1.getCreationDate()を使用しています –
@DavisMolinari編集済みのコードですがまだソートされていませんリスト –