• 締切済み

java データの並び替え方について教えてください

[名前、日付、日付][名前、日付、日付][名前、日付、日付]・・・・という情報をデーターベースから得たvectorがあります。3つめの日付が新しい順にこのvectorを並び替えたいのですが、 どのようにすればよいのでしょうか。 ちなみに、2つのの表から得てきた情報が混ざっているVectorなので、データーベースから得るときのSelect文で並び替えるのは無理と思われます。 javaで並び替える方法を教えてください。 非常に困っております。

みんなの回答

  • had4149
  • ベストアンサー率18% (9/48)
回答No.4

他の型が仰っている通り、SQLのSELECT分に条件付けすれば出来ると思います。 Javaでということでしたら#3の方の提示されている方法のほかにも、java.util.dateクラスにafuterとbeforeというメソッドがありますのでこちらを使用しても良いと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • shin_5696
  • ベストアンサー率39% (21/53)
回答No.3

SQLから取得時に整列可能だとはおもいますが、 あくまでJavaということならば TreeMapを使うのもよいかもしれませんね。 TreeMapのインスタンスに対して TreeMap#put(Object key, Object value) を使用します。 この際、日付の3つ目の値をYYYYMMDD等の数字に変換しInteger型に格納してキーに設定。valueの方にデータの塊のvectorを格納すると、自動的に整列してくれます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>データーベースから得るときのSelect文で並び替えるのは無理と思われます。 試してないけど可能だと思いますよ。

全文を見る
すると、全ての回答が全文表示されます。
  • nimua
  • ベストアンサー率21% (8/38)
回答No.1

取得した情報を格納しているのが、 オブジェクト(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); としてあげればソートが行われます。 と、こんなもんで如何でしょう?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL Serverでデータの表示順を決める方法

    SQL Serverのデータベースなのですが、 日付順に変えたいのです SDate(日付)というタブとSTime(時間)というタブがあるので、古い順にしたいのですがどうすればよいでしょうか? SDateには"20051001"みたいな感じで、STimeには、"1715"みたいな感じで入っています。 できれば、実行したら日付順になるのではなく、 Select文などでいつ呼び出しても日付順に出力されるようにしたいのです。 もし、無理だったら、日付順に変更する方法を教えてくださいー

  • javaで表を

    javaで表を作りたいんですが、データベース系を使わないで作りたいんですが…そんなこと可能でしょうか?セルとかの概念がjavaにあるのやら…表を作って、それに書き込んだりするだけでいいんです。何か分かる人がいたら宜しくお願いします。

    • ベストアンサー
    • Java
  • Javaでデーターベースからデーターを取得

    Javaでデーターベースからデーターを取得 こんにちは Javaでデーターベースからデーターを取得する際の 決まり文句の while( rs.next() ) ですが (別に何も疑問に持たずにそのまま使ってました。) 本来 while( ) のカッコの中には何かしらの条件文が入るものだと習いました。 それで while( rs.next() = true ) { ・・・ } もしかしたらこんな記述でも動くのでしょうか?

  • データ管理の方法

    ホームページビルダー6.5ライトを使っています。 ホームページを作成する中で、データベースを扱ったページを作ってみたいと思いました。例えば住所録を載せたいとします。名前順や住所順で並び替えをする機能があったらいいなと思います。現在はエクセルでデータベースを作成し、名前順で並び替えビルダーに貼り付けて1ページ作成。住所順で並び替えビルダーに貼り付け1ページ作成。と地味な作業を行っています。また表の中には画像も入れたいと思っています。 いい方法・ソフトなどありましたら紹介願います。

  • perlとsqlに関する質問です。

    データベースからある情報を取り出すときに困っています。 取り出す条件を 一、order by 日付 二、group by 名前 の順に取り出したいのですが、うまくいきません。 どのように抜き出せばいいかわからないので、わかる方はご教授お願いします。 以下は大ざっぱな抽出部分のプログラムです。 $sth = $dbh("select * from table order by 日付カラム group by 名前カラム" limit 3,9") … よろしくお願いします。

  • S2Daoによるデータ保管

    お世話になります。 現在S2Daoを使ってJAVAからデータベースへアクセスする勉強をしております。下記のサイトなどを参考にさせてもらっております。 ?http://d.hatena.ne.jp/tetsuya411/20080201/1201874112? データベースはHSQLDBを使用しております。 <質問>  Eclipseからサンプルのプラグラムは問題なく実行できるのですが、JAVA実行内でDaoを経由してデータベースに保管?し利用しているのですがJAVAを終了してデータベースを直接のぞくとINSERTしたデータが残っていません。しかし、SQL文で直接INSERT文を発行するとデータベースにデータが残っています。 つまり、JAVA実行時のメモリー上でしかデータが残っていないようなイメージなのですがデータベースにデータを残すにはどうすればいいのでしょうか? ちなみにHSQLDBの設定はデフォルトのままです。 以上

  • JAVAのパッケージについて

    CentOSで、WEBページからデータベースにアクセスするためのプログラムをつくっているのですが、サーブレットがコンパイルエラーになります。 サーブレットで、mypackageが解決できないとのことです。 # javac -classpath /opt/tomcat6/apache-tomcat-6.0.20/lib/servlet-api.jar Controller10.java ---------- 1. ERROR in Controller10.java (at line 10) import mypackage.Model10; ^^^^^^^^^ The import mypackage cannot be resolved ---------- mypackageはデータベースにアクセスするJavaBeanであるModel10をいれているフォルダです。Model10.javaはコンパイルできました。 Controller10.java というのは、Model10.classにアクセスするためのサーブレットです。 Controller10.javaと同じ階層に、mypackageのフォルダをつくり、その下に、Model10.classというJavaBeanをいれていて、なぜ解決できないのか、どうしてもわかりません。 ファイル構造は下記の通りです。 webapps  |___mysamples      |_test.jsp      |_HTML      |_WEB-INF        |_class               |_Controller10.java          |_mypackage ←フォルダ             |_Model10.class ←JavaBean Controller10.javaの抜粋です ------------------------------ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.RequestDispatcher; import java.io.PrintWriter; import mypackage.Model10; ←Controller10にimport文をいれてます。 ------------------------------ Model10.javaの抜粋です ------------------------------ package mypackage;  ←Model10にpackage文をいれてます。 import java.sql.DriverManager; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; ------------------------------- JARやWARファイルをつくらなければ、パッケージしたことに ならないのでしょうか・・・。 すみませんが、解決方法を教えてください。

    • ベストアンサー
    • Java
  • AccessのデータをjavaプログラムからSQL文を使って操作したい。

    フォーム上の入力欄で入力したデータベースのパスを使って、Accessのデータをjavaプログラムから SQL文を使って操作したいのですがどのような手段があるでしょうか? javaとAccessの接続について初めてで条件に合った方法を探せずにいます。 以下がこれまで試みた手段です。 JDBC-ODBCを使った場合、パスの設定がプログラム上で設定できませんでした。ODBC データソース アドミニストレータで登録をしなければなりませんでした。 jackcessはパスを入力欄から入力できましたが、SQL文が使えませんでした。

    • ベストアンサー
    • Java
  • JavaでBtrieveを扱いたいのですが・・・

    まったくのJava初心者です。 勤務先でBtrieveファイルを使ったPOSシステムを扱っていますが、この度Javaで操作できないものかと、思いたちました。 Javaで提供されているJDBCがデータベース操作のツールだというところまではわかったのですが、どうも、Btrieveを扱えるという情報を見つけられません。JDBCは、リレーショナルDB仕様のツールなのでしょうか?あるいは、JavaからBtrieveにアクセスする方法が別にあるのでしょうか? DBに関して、ほんの聞きかじりの知識しかありませんので、質問自体がでたらめかもしれません、どうぞお許しください。

  • Select命令が来たらテーブルの全データを消去したい.

    初めまして.よろしくお願いします. JDBCを使いJAVAプログラムからSelect命令が来たらテーブルの 全データをデリートするという動作をPL/pgSQL言語を使ってトリガ関数 として書きたいのですが、上手い書き方が見つかりません. Select命令をトリガとすると CREATE RULE name AS ON select TO tableName DO INSTEAD ~ となってしまい、DO以下にDelete文が書けないのです. JAVAのexecuteQuery関数を用いて連続してSelect文とDelete文を送る と、Select文とDelete文の実行される間にこのテーブルは随時新たなデータ が挿入される可能性があるので、なんとかトリガ関数で書きたいのです. 良い方法があればご教授のほうお願いします.