- 締切済み
java データの並び替え方について教えてください
[名前、日付、日付][名前、日付、日付][名前、日付、日付]・・・・という情報をデーターベースから得たvectorがあります。3つめの日付が新しい順にこのvectorを並び替えたいのですが、 どのようにすればよいのでしょうか。 ちなみに、2つのの表から得てきた情報が混ざっているVectorなので、データーベースから得るときのSelect文で並び替えるのは無理と思われます。 javaで並び替える方法を教えてください。 非常に困っております。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- had4149
- ベストアンサー率18% (9/48)
他の型が仰っている通り、SQLのSELECT分に条件付けすれば出来ると思います。 Javaでということでしたら#3の方の提示されている方法のほかにも、java.util.dateクラスにafuterとbeforeというメソッドがありますのでこちらを使用しても良いと思います。
- shin_5696
- ベストアンサー率39% (21/53)
SQLから取得時に整列可能だとはおもいますが、 あくまでJavaということならば TreeMapを使うのもよいかもしれませんね。 TreeMapのインスタンスに対して TreeMap#put(Object key, Object value) を使用します。 この際、日付の3つ目の値をYYYYMMDD等の数字に変換しInteger型に格納してキーに設定。valueの方にデータの塊のvectorを格納すると、自動的に整列してくれます。
- pcbeginner
- ベストアンサー率46% (261/560)
>データーベースから得るときのSelect文で並び替えるのは無理と思われます。 試してないけど可能だと思いますよ。
- nimua
- ベストアンサー率21% (8/38)
取得した情報を格納しているのが、 オブジェクト(JavaBeans?)だと仮定した場合の解決方法を。 まず、情報をもっているクラスに「Comparable」をimplementsします。 そしてcompareTo(Object o)を実装します。 以下のようになるかと思います。 ****************************************************** public int compareTo(Object o) { 情報クラス bean = (情報クラス) o; if (this.3つ目日付 < bean.get3つ目日付) { return -1; } else if (this.3つ目日付 < bean.get3つ目日付) { return 1; } return 0; } ****************************************************** 比較対照より、自分自身を小さいと判断するなら「-1」を、 大きいと判断するなら「1」を、 同じだとするなら「0」を返すようにします。 (詳細はAPIを見て下さい) で、すべてを格納したVectorに対して、 Collections.sort(vector); としてあげればソートが行われます。 と、こんなもんで如何でしょう?