HashMapを常に使用することができないのは、ArrayListまたはLinkedListよりもaddの方が効率が良いにもかかわらず、要素。LinkedListまたはArrayListにHashMapを使用する場合、またはその逆の場合
私はそれを見つけ出し、いくつかの理由を見つけましたが、HashMapを使用するための回避策はまだありましたが、利点はまだ生きています。
HashMapを常に使用することができないのは、ArrayListまたはLinkedListよりもaddの方が効率が良いにもかかわらず、要素。LinkedListまたはArrayListにHashMapを使用する場合、またはその逆の場合
私はそれを見つけ出し、いくつかの理由を見つけましたが、HashMapを使用するための回避策はまだありましたが、利点はまだ生きています。
リストは要素の順番付けを表します。 マップは、キーと値のペアの集合を表すために使用されます。
マップをリストとして使用することもできますが、リストを作成する際には明確な欠点があります。
保守指図: - 定義によるリストが注文されます。アイテムを追加すると、アイテムを挿入した順序でリストを反復することができます。 HashMapにアイテムを追加すると、アイテムを同じ順序で取得することが保証されません。順序を維持するLinkedHashMapのようなHashMapのサブクラスがありますが、一般的な順序はMapで保証されません。
キー/値の意味: - マップの目的は、後の時点でアイテムを取得するために使用することができ、キーに基づいてアイテムを格納することです。同様の機能は、キーがリスト内の位置にあるような限られた場合にのみ、リストを用いて達成することができる。
コード可読性 以下の例を検討してください。
// Adding to a List
list.add(myObject); // adds to the end of the list
map.put(myKey, myObject); // sure, you can do this, but what is myKey?
map.put("1", myObject); // you could use the position as a key but why?
// Iterating through the items
for (Object o : myList) // nice and easy
for (Object o : myMap.values()) // more code and the order is not guaranteed
コレクション機能 いくつかの偉大なユーティリティ関数は、コレクションクラスを使ってリストのために利用可能です。たとえば...このことができます
// Randomize the list
Collections.shuffle(myList);
// Sort the list
Collections.sort(myList, myComparator);
希望、
リンクされたリストは、パフォーマンスの問題のために悪いと言われることがよくあります。要素の順序付けのために、私はArrayListsに対してLinkedListsを頻繁に使用します。ポジションをキーとしてHashMapsを使用した方がパフォーマンスとメモリが向上しますか? – Seza
リストとマップは異なるデータ構造です。マップは、キーと値を関連付けるときに使用され、リストは順序付きコレクションです。
MapはJava Collection Frameworkのインターフェイスで、HashMapはMapインターフェイスの1つの実装です。 HashMapは、キーに基づいて値を探し、キーに基づいて値を挿入および削除するのに効率的です。 HashMapのエントリは順序付けられていません。
ArrayListとLinkedListは、Listインターフェイスの実装です。 LinkedListはシーケンシャルアクセスを提供し、一般的にリスト内の要素の挿入と削除で効率的ですが、リスト内の要素にアクセスすることは効率が悪いです。 ArrayListはランダムアクセスを提供し、要素へのアクセスがより効率的ですが、要素の挿入および削除では一般的に遅くなります。
は 'Lists'と' Maps'は異なる操作や不変条件を持つ2つの*全く*異なるデータ構造は、あります。あなたが考えている文脈/要件について、どちらが受け入れられる解決策であるのかを説明できますか? –
明らかにあなたは*特定の順序で*のセットを保持する必要はありませんでした* ... –
Downvote、なぜですか?私はこれが正しい質問だと思う。しかし、知識の不足を示していますが、SOの質問は知識の欠如を示すために下落してはいけません。実際、質問は常に知識の欠如の結果です。 –