5

文字列形式の日付のarrayListsがあります。このarraylistsをソートするにはどうすればよいですか?

ArrayList<String> aryBeginDate;
ArrayList<String> aryDueDate;

for (int i = 0; i < arySubject.size(); i++) {

    RowItem row = new RowItem();
    row.setSubject(arySubject.get(i).toString());
    row.setUser(aryFromUser.get(i).toString());

    if (aryBeginDate.equals(" ")) {
        row.setStartDate(" ");
    } else {
        row.setStartDate(aryBeginDate.get(i).toString()); \\Have to sort at this line
    }

    if (aryDueDate.equals(" ")) {
        row.setEndDate(" ");
    } else {
        row.setEndDate(aryDueDate.get(i).toString()); \\Have to sort at this line
    }

    aryListBean.add(row);

}
4

6 に答える 6

12

日付が必要な場合は文字列を使用しないでください。日付を使用します。表示するときは、日付のみを文字列に変換する必要があります。それ以外の場合、コード内のすべての場所で、日付は Date 型にする必要があります。日付には時系列の自然な順序があるため、これにより時系列での並べ替えが可能になります。

したがって、RowItemに astartDateと がありendDate、どちらも typeDateである場合、単純なコンパレータを使用して開始日で行項目のリストを並べ替えることができます。

Collections.sort(rowItems, new Comparator<RowItem>() {
    @Override
    public int compare(RowItem r1, RowItem 2) {
        return r1.getStartDate().compareTo(r2.getStartDate());
    }
}); 

また、あなたのやり方は本当に読めないので、if/else ブロックのインデントを修正してください:

if (aryBeginDate.equals(" ")) {
    row.setStartDate(" ");
} 
else {
    row.setStartDate(aryBeginDate.get(i).toString());
}
于 2013-02-26T09:43:04.097 に答える
4

非常に簡単な答え: 昇順の場合は、次のメソッドを呼び出すだけです。

Collections.sort(mArrayList, new OutcomeAscComparator());
public class OutcomeAscComparator implements Comparator<Select>
    {
        public int compare(Select left, Select right) {
            return left.getOutcome().compareTo(right.getOutcome());
        }
    }

選択は私のモデルです。降順の場合:

Collections.sort(mArrayList, new OutcomeDescComparator());
public class OutcomeDescComparator implements Comparator<Select>
    {
        public int compare(Select left, Select right) {
            return right.getOutcome().compareTo(left.getOutcome());
        }
    }

リストを昇順および降順にしたい場合は、リストビューを更新することを忘れないでください

                mListView.invalidateViews();

                mAdapter.notifyDataSetChanged();
于 2014-02-11T05:36:27.083 に答える
1

これを文字列で自分で並べ替えようとすると、これは非常に苦痛になります。文字列を日付に解析して(非常に便利な日付/時刻ツールについてはJodaTimeを確認してください)、java.util.Collections.sort()で並べ替えることをお勧めします。

于 2013-02-26T09:39:50.070 に答える
1

を使用しComparatorてリストを並べ替えることができます。このようなもの:

Collections.sort(aryListBean, new Comparator<RowItem>() {
    @Override
    public int compare(RowItem r1, RowItem r2) {
        // Place your compare logic here
    }
});
于 2013-02-26T09:48:25.993 に答える
0

ArrayListには組み込み関数がありsort()ます。文字列を使用しているので、これは機能します。

于 2013-02-26T09:37:23.557 に答える
0

最初に String を Date に変換し、arraylist を作成します。次に、コレクションの並べ替えメソッドを使用して配列リストを並べ替えます。

于 2013-02-26T09:42:43.433 に答える