Hashtableから一番最後のデータを取得する方法

このQ&Aのポイント
  • Hashtableにputしたデータの一番最後のkeyを取得する方法について教えてください。
  • Hashtableから一番最後のデータを取得する方法を探しています。
  • APIを見たところ、HashtableにはlastElementメソッドがないようです。他にどのような方法がありますか?
回答を見る
  • ベストアンサー

Hashtableにputしたデータの一番最後のkeyを取得するには?

hashtableから一番最後のデータ(あるいはMaxKey、ここでは5)を取得したいのですが、APIを見たところVectorでいうlastElementメソッドみたいなものがHashtableにはありません・・・。 なにかいい方法はありませんでしょうか? よろしくお願い致します。 Hashtable hashtable = new Hashtable(); hashtable.put("1","テスト154"); hashtable.put("2","テスト879"); hashtable.put("3","テスト486"); hashtable.put("4","テスト084"); hashtable.put("5","テスト978");

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • m_hagizo
  • ベストアンサー率65% (31/47)
回答No.1

Hashtableは、セットした順序は関係なしに、容量や検索時間のコストを最小にするための仕組みなのでは? よって、自分が入れた順番にメモリ上に入るわけではないと思うのですが…。 順序性を考慮するなら、Vectorなどを使われた方がよろしいかと思います。

saya129
質問者

お礼

すみません、解決するこができました! どうもありがとうございました!

saya129
質問者

補足

どうもありがとうございます。 実はPropertiesクラスを使って、簡単なデータの追加/削除を行おうと思っているんですけど、 prop.sizeで追加されている件数を調べてそれに1を足して prop.setProperty(count,strData); のように追加処理をさせていますが、 "1","aa" "2","bb" "3","cc" たとえば"2","bb"を削除した後に"dd"を追加すると、 prop.sizeは2なので、それに1を足すと3で"cc"に"dd"が上書きしてしまうんです・・。 keyをダブらせないで追加するやり方でなにかいい方法はないでしょうか?? (×_×;)

関連するQ&A

  • [C#]Hashtableの値として保持されているHashtableの値へのアクセス

    System.Collections.Hashtable hashtable = new System.Collections.Hashtable (); hashtable["test1"] = new System.Collections.Hashtable (); hashtable["test1"]["test2"] = "テストデータ"; に相当する動作をする書き方はどうすればよいでしょうか? 代入した値の取り出しをしたいので探している解は System.Collections.Hashtable hashtable = new System.Collections.Hashtable (); System.Collections.Hashtable hashtable2 = new System.Collections.Hashtable (); hashtable2["test2"] = "テストデータ"; hashtable["test1"] = hashtable2; ではありません. 変数 = hashtable["test1"]["test2"]; に相当する捜査の方法も一緒にお願いします.

  • GOF本のStrategyのJava版での質問です。

    GOF本のStrategyのJava版での質問です。 下記を実行すると、クラスCompositionのbreakCountの関数を実行した所で、NullPointerExceptionが発生してしまいます。(SimpleCompositorのcomposeの戻り値である1を期待しているのですが?)お分かりになる方、御教示ください。 //ここから public class Main { public static void main(String[] args) { Composition quick = new Composition(new SimpleCompositor()); quick.repair(); } } class Composition { public Composition(Compositor c) { _components = new Vector(); _lineBreaks = new Vector(); } public void repair() { Hashtable natural = new Hashtable(); Hashtable stretchability = new Hashtable(); Hashtable shrinkability = new Hashtable(); int componentCount; Hashtable breaks = new Hashtable(); // 初期化 componentCount = 0; _lineWidth = 0; natural.put("natural1", new Integer(0)); stretchability.put("stretchability1", new Integer(0)); shrinkability.put("shrinkability1", new Integer(0)); breaks.put("breaks1", new Integer(0)); // ブレーク位置を決める int breakCount; breakCount = _compositor.compose( natural, stretchability, shrinkability, componentCount, _lineWidth, breaks ); //  System.out.println(breakCount); } private Compositor _compositor; private Vector _components; private int _componentCount; private int _lineWidth; private Vector _lineBreaks; private int _lineCount; } abstract class Compositor { public Compositor() { } public abstract int compose( Hashtable natural, Hashtable stretch, Hashtable shrink, int componentCount, int lineWidth, Hashtable breaks ); } class SimpleCompositor extends Compositor { public SimpleCompositor() { } public int compose( Hashtable natural, Hashtable stretch, Hashtable shrink, int componentCount, int lineWidth, Hashtable breaks ) { // ... return 1; } }

    • ベストアンサー
    • Java
  • こんばんは!

    こんばんは! JavaのHashtableの配列化についてわからない事があったので質問させて頂きます。 以下、コードです。 __________________________________________________________________________________________ public static int o; public static Hashtable[] hashArray = new Hashtable[o]; public static void Test() { hashArray[o].put("明日", "monday"); hashArray[o].put("明後日", "tuseday"); System.out.println(hashArray[o].get("明日"));         System.out.println(hashArray[o].get("明後日")); } public static void main(String[] args) { String s = JOptionPane.showInputDialog("何個のデータを作成しますか?"); int size = Integer.parseInt(s); for (o = 0; o < size; o++) { Test(); } } __________________________________________________________________________________________ 最初にローカル変数のoを宣言し、それをメインメソッドで中身をきめ、その分だけTestメソッドをループさせて monday tuseday を表示させたいのですが、エラーが出てしまいできません。 ローカル変数の使い方がおかしいのでしょうか? Java初心者の為、おかしなことを言っているかもしれません>< 宜しければご回答を頂けると有難いです。 宜しくお願い致します。

  • インスタンスの作成について

    下記の方法にてHashtableのインスタンスを作成しようと思ったのですが has1.put("key",1); の場所でNullpointerException が発生します。 has1がNullになってしまうのですが 下記のような手法でインスタンスは作れないのでしょうか。 public class InstanceCreate { Hashtable has1; Hashtable has2; Hashtable has3; public static void main(String[] args) { InstanceCreate instance = new InstanceCreate(); instance.exe(); } public void exe() { Hashtable hash[] = {has1,has2,has3}; for(int i=0; i<hash.length;i++){ hash[i] = new Hashtable(); hash[i].put("key", "value"); } has1.put("key",1); } }

    • ベストアンサー
    • Java
  • 重複するキーから一番古い年月日のデータのみ取得したい

    下記の事を実現するSQL文がどうしても分からず困り果てています。。。。 ご回答の程お願い致します。 テストテーブルにはコード、枝番、年月日の3種類のデータがあります。 テストテーブルはコードと枝番を主キーとします。 1つのコードに対して、重複しない枝番が複数登録可能となっています。 取得するデータはコード、枝番、年月日の3種類のデータを取得し、同じコードの中で年月日が一番若いデータのみ取得したいです。 同じような質問で http://okwave.jp/qa4089797.html と言うURLの回答を参考に SELECT コード , 枝番 , 年月日 FROM テストテーブル where (コード , 年月日) in (SELECT コード , MIN(年月日) FROM テストテーブル GROUP BY コード ); というSQL文を考えたのですが、 コードは同じで枝番は違うが年月日が同じデータがあると 望んでいない結果にならず、困り果てています・・・・ ■テストテーブルのデータ コード │ 枝番 │ 年月日 ----------------------------- 1 │ 1 │ 2009-01-01 1 │ 2 │ 2009-01-03 2 │ 1 │ 2009-02-15 2 │ 2 │ 2009-02-10 2 │ 3 │ 2009-02-20 3 │ 1 │ 2009-03-15 3 │ 2 │ 2009-03-10 3 │ 3 │ 2009-03-05 3 │ 4 │ 2009-03-01 ↓↓↓ ■望んでいる取得結果 コード │ 枝番 │ 年月日 ----------------------------- 1 │ 1 │ 2009-01-01 2 │ 2 │ 2009-02-10 3 │ 4 │ 2009-03-01

  • 双方向のHashtableクラス

    Hashtableクラスでは、getメソッドを用いて、keyからvalueの値を取得出来ますが、逆は出来ません(Iteratorすれば出来なくもないですが・・・)。 双方向に値をとれる、よいクラスがあれば、教えてください。 無ければ、keyとvalueを入れ替えて2回putしようと思っていますが、何かしら、よいクラスがありそうな気がしたので。

    • ベストアンサー
    • Java
  • cakephpでのデータ取得について質問です。

    cakephpで質問です。 説明が下手で申し訳ないのですが。 findメソッドでconditionsとorderを指定して特定のIDから5件を取得するにはどうしたらいいでしょうか? アプリとの連携で現在pagenateで5件表示でページングを行っていますが、アプリ側でデータの削除を行うとズレが生じるため、現在取得されているデータの最後のID以降の5件のデータを取得したいと考えています。 何か良い方法などございましたら回答して頂ければと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • GoogleMapsAPI Key取得ができない

    HPを変更しました。 google maps を入れたいのです。 しかし、下記コメントが出てます。 このウエブサイトには 別のgoogle maps apiキーが必要です。新しいキーは http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key で作成できます。 ここを調べて見ても、apiキーが取得できません。 Google Maps APIを使うための API Key の取得が、V3では不要になりました。 と書いてありますが、現状api keyを取得しないと、使えません。 いろいろ調べたのですが、v2の取得方法は書いてありますが、現状では役に立ちません。 http://code.google.com/intl/ja/apis/maps/signup.html で登録できないから、質問しています。 具体的なやり方を教えてください。

  • StrutsでPOSTのデータ(リクエストボディ)を取得する

    StrutsでPOSTで送ったデータを取得する方法がわかりません。 メッセージボディのデータ param1=aaaa&param2=bbbb の文字列を取得したいと考えています。 executeメソッドの中で ServletInputStream is = request.getInputStream(); byte[] buff = new byte[4096]; int len = is.readLine(buff,0,4096); を行っても lenが-1になってしまいます。 どなたか解決方法を教えていただければと思います。 よろしくお願いします。

  • apiで取得したデータの出力について

    現在apiで取得したデータ(オブジェクト)をforeach構文を使い出力させているのですが、 上から3つ目までをまず出力させ、一旦中断。その後、同ページの指定の場所に 4つ目以降のデータを出力させる方法を探しています。 色々と試してはいるのですが上手くいきません。 この処理方法についてご存知の方がいらっしゃいましたら是非ともご回答の方を宜しくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう