私はString
のキーとString
の値を持つHashtable
を持っていますが、複数の異なるデータ型を格納できる必要があるプロジェクトのポイントに達しました。たとえば、、String
、Date
などをすべて1つに保存する必要があります。Hashtable
複数のデータ型を1つのハッシュテーブル変数に格納する方法はありますか?
答えて
HashTable
または任意のコレクションMap
は、int
とその他のプリミティブタイプを除き、これを処理できます。プリミティブタイプは保存できません。Object
参照のみです。 int
はInteger
オブジェクトとしてラップする必要があります。
それで、私はそれをそれが格納されたデータ型として取り出すことができますか? – samwell
実際には、いいえ - キャストなしではなく、それはまだ厄介です。異なるタイプのマップを使用するほうがずっと良いでしょう。もっと良いことには、マップの代わりに異なる名前のフィールドを持つクラスを作成するだけです。正しいタイプの –
一般データ型Object
を保存することはできますが、プリミティブデータ型は許可されません。
HashTableをHashtable<String, Object>
に変更し、int
を保存する場合は、最初にキャストするか、または自動キャストを使用してInteger
にキャストする必要があります。テーブルからあなたの価値を得た後、タイプを決定するにはif(value instanceof String)
などでタイプを決定できます。これはあなたにString型のキーと基本的にObject型(日付、整数、文字列など)の任意の子孫を意味Object型の値を持つマップを与える
タイプキャストする必要はありません。自動ボクシングは自動的に行います(Java 5+)。 – 01es
クラスはHashtableと呼ばれ、2つの型パラメータを取ります.1つではありません。 –
Map<String, Object> map = new HashMap<String, Object>()
。他の答えは、int、booleanなどのプリミティブを使用する代わりに、Integer、Booleanなどの対応するものを使用する必要があるという事実を正しく示しています。get
戻り値の型はObject
です。したがって、タイプ情報を正しく処理するのは開発者の責任です。
HashtableとHashMapの違いは何ですか?質問に対する回答はhereです。
これは可能ですが、一般的には良い考えではありません。これより多くの場合、型キャストの例外や問題が発生します。
HashTableは、特定のクラスタイプではなく汎用オブジェクトを格納するように設定できますが、検索時の型変換は自動的には行われません。
オブジェクトをコレクションから戻すには、型チェックルーチンのいくつかの形式を開発する必要があります。
保存するクラスの種類ごとに別々のコレクションを作成する方がよいでしょう。
PS:HashTableではなくHashMapを使用することをおすすめします。 HashTableは推奨されていません。
私はそれを知らなかった。 – samwell
- 1. C++は1つのコレクションに複数のデータ型を格納します
- 2. 複数の行セットを1つの変数sqlに格納する方法
- 3. ベクトルは1つの位置に複数のデータを格納できますか?
- 4. 1つのデータ列に複数の従業員IDを格納
- 5. 1つのアイテムに複数の値を格納するには
- 6. Django複数のページのフォームデータを1つのテーブルに格納する方法
- 7. 複数の値を1つの属性に格納する方法
- 8. 1つの列に複数の変数がありますか?
- 9. 1つのフィールドに複数の値を格納する
- 10. 複数のビット値を1つのテーブル列に格納する
- 11. 複数の項目を1つのフィールドに格納するmysql
- 12. NSUserDefaultsは複数の異なるデータ型を格納できますか?
- 13. 複数のデータフレームを1つのデータ構造に格納する - R
- 14. 2つの32ビット値を1つのlong int変数に格納する方法は?出来ますか?
- 15. SQL Server 2005 - RowSetを格納する変数のデータ型
- 16. 変数にajaxデータを格納する
- 17. 変数内に複数のドロップダウン値を格納する方法は?
- 18. リスト内の複数の項目に1つの変数を割り当てる方法はありますか?
- 19. Javascriptで変数に格納されている変数をインクリメントする方法はありますか?
- 20. テーブルを1つまたは複数のデータベースファイルに格納しますか? (Bookingsアプリケーション)
- 21. 変数にvar_dumpデータを格納する方法
- 22. エラー:1つの宣言に複数の型があります
- 23. 格納する変数のデータ
- 24. 複数のオブジェクトをflex sharedlocalobjectに格納する方法は?
- 25. 複数のメソッドを1つのセレクタに格納できますか?
- 26. 複数のクラスライブラリを1つのライブラリに格納
- 27. 関数の戻り引数をHaskellに格納する方法
- 28. 複数の値をSELECTからSQL Serverに格納する方法はありますか?
- 29. bash - 実行間に変数を格納するためのより良い方法はありますか?
- 30. 実行時に同じ変数に別のデータ型を格納します
キーを 'Object'に変更しますか? – Mysticial
get/setを使ってオブジェクトを作成し、そのオブジェクトを追加するのは良い選択ではありませんか?HashTable/ArrayList(または)あなたが興味を持ったコレクションは何ですか?正確なインデックスとデータ型がわからない場合に複数のデータ型を追加すると、クラスキャスト例外が発生します。 – kosa
これは非常に壊れやすいデータ構造のように聞こえます。一般的に達成しようとしていることを説明できますか?誰かがあなたのデータをより良く構成する方法を提案できますか? – Bobulous