2012-02-27 7 views

答えて

11

それらは類似しているが、それは、ハッシュテーブルを使用してではなく、Hashtableあるため、設計の観点から、Propertiesクラスは、Java(登録商標)の「ミス」の一つであると考えられています。それはインターフェースであったはずです。

常に可能な場合は、抽象を使用するので、これが好ましい:

Map<String, String> stuff = new HashMap<String, String>(); 

あなたがにしていない限り、Propertiesを使用して避ける傾向にあります。あなたはそれをディスクに保存したい場合は

key1=value1 
key2=value2 

+3

あなたはHashtableを意味しましたか?:)(矛盾したスペルはまた、Javaミスの一例です) – Lukasz

+0

LOL - 私はそれに気付かなかった:) – Bohemian

2

プロペットは、デフォルトで同期されるハッシュテーブルを拡張します。 HashMapはデフォルトでは同期されていません。組み込みのスレッドセーフティをわずかなパフォーマンス向上のために交換しています.1つは測定できない可能性が高いスレッドです。

プロパティはJava 1.0の古いクラスです。 HashMapは、Joshua Blochの新しいコレクションAPIの一部です。 )あなたが他の目的のためにそれを使用する場合は、あなたの選択は、同時実行に依存します:

0

java.util.Propertiesゆえjava.util.HashMap<String, String>

プロパティの同期形が...プロパティを処理するためにいいですとあなたがそれを見ることができますHashtable<Object,Object>ですあなたのプログラムの管理

2

あなたは現代のスレッド安全性のためにConcurrentHashMap<String, String>を持っています。あなたが.propertiesファイルを読むためにそれを使用していない限り、実際にPropertiesを使用しないでください。

1

Propertiesクラスは、基本的には、(このようなテキストと値のペアを)+書き込みセット形式でディスクから読み取るための機能を追加して、ハッシュテーブルの拡張であり、その形式を使用してプロパティを使用します。それ以外の場合は、HashMapまたはHashtableを使用します。

16

この2つのユーティリティクラスの目的は異なります。 Map、またはあなたのケースでは、HashMapはユニークなキーとそれらが指す値を持つ汎用のストレージオブジェクトです。 HashMapは、任意のオブジェクト型をキーとして、オブジェクト型をその値として持つことができます。

しかし、java.util.Propertiesは特別な目的のマップです。これは、プロパティファイルの読み取り/書き込みを行うために開発されました。それには特別な方法があります[load(..)参照]。地図はありません。

だから、あなたはそれらを使うために異なる状況があります。あなたが読むためにプロパティを必要とするところなら、あなたはPropertiesと一緒に行くべきです。ルックアップ値をいくつかのロジックに保存したいところはHashMap<String, String>です。

厳密な規則はありません。HashMap<String, String>Propertiesを同じ意味で使用できます。しかし、エンジニアとして、の作業にはツールを使用してください。

関連する問題