人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaでハッシュテーブルの要素を2つ以上にできるでしょうか?

イメージとしては、

キー:1
値:うま、ひつじ、ねこ

のように、一つのキーに対して、複数の値を持たせたいのですが…。

●質問者: rapuntuleru
●カテゴリ:コンピュータ インターネット
✍キーワード:Java ねこ ひつじ イメージ キー
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● supermomonga
●20ポイント ベストアンサー

結論から言うとできません。

ただし、値に配列オブジェクトを使用することで擬似的に再現する、という事は可能です。

挙げられた例では、String型の配列オブジェクトをputしてやればOKですよ。

◎質問者からの返答

なるほど。。。


2 ● e55ind
●20ポイント

JavaのHashtableのことをいってるのなら、できません。

http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Hashtable....

自前でクラスをつくって実装すればできます。


3 ● kn1967
●20ポイント

出来ないです。


どうしてもという事であれば、

"うま、ひつじ、ねこ" というように1つに合成した形で格納しておいて、

キーで抽出した後に”、”で分割するといったような面倒な事になります。


面倒だからという事で、下記のようにclassを作成して、利用しやすく、

するという手もありますが、必ずしも効率の良い対応とは言えないです。

http://www.atmarkit.co.jp/fjava/javatips/081java010.html


データ量が少ないのであれば、

ハッシュよりもアレイを使う事を考えてみてください。


データ量が多い場合は、バックエンドとしてデータベースを用いるほうが、

効率よく扱えるかもしれませんので、一考してみてください。

(高機能なPostgreSQLやMySQLなどよりも素朴で非常に高速なSQLiteなどは、

親和性も高く、情報収集も容易です。)


4 ● km1967
●20ポイント

すでに回答が出ているようにHashtableのみではできません。


代わりにHashMapを使えば比較的簡単にできます。

http://www.atmarkit.co.jp/fjava/javatips/081java010.html


アレイ(Arrayクラスのこと?)やデータベースという的外れな回答が見受けられますが、惑わされないように。


5 ● b-wind
●20ポイント

ハッシュテーブル

Java では標準でもハッシュテーブルの実装はいくつかある。

特定のどれかを指しているのか違うのか区別がつかん。


言語仕様として存在する訳じゃないからやりようはいくらでもあるだろ。

class ArrayValueHashMap extends HashMap<Object,Array> {
 public void put(Object key, Object value) {
 if ( ! this.containsKey(key) ) {
 super.put(key,new Array());
 }
 super.get(key).add(value);
 }

 public void get(Object key,int index) {
 if ( this.containsKey(key) ) {
 return this.get(key).get(index)
 } else {
 return null;
 }
 }
}

こんなん?


実際はもうちょっと作り込まないとダメだけど。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ