Bobby
Bobby

Reputation: 18305

What are the pros and cons of LinkedHashMaps vs. LinkedHashSets?

Could someone explain the main benefits for choosing one over the other and the detriments that come with that choice?

Upvotes: 7

Views: 13274

Answers (5)

DKSRathore
DKSRathore

Reputation: 3063

LinkedHashMap and LinkedHashSet has only one difference and that comes by HashMap and HashSet difference, their parents. Again, HashSet is just a variation of HashMap. You can say HashSet as a HashMap with all values pointing to a single final object. Therefore, both of them does not give you much differences.

Using LinkedHashSet, You shall be using only one final object other than your keys. Using LinkedHashMap, if you set values as null for all keys, then its better than LinkedHashSet for Set purpose as well.

Upvotes: 2

Roman Kagan
Roman Kagan

Reputation: 10626

LinkedHashSet internally contain a doubly-linked list running through all of its entries that defines the order of elements. This class permits null elements.

This class implementation is not synchronized, so it must be synchronized externally. LinkedHashMap is not synchronized either and must be synchronized externally

For example:

Map map = Collections.synchronizedMap(new LinkedHashMap());

Other than that LinkedHashSet stores single values per element and LinkedHashMap stores key/value pair.
In the diagram below you can see java.util.Collections. Solid boxes show concrete class implementation
alt text http://www.softfinity.com/diag1.png

Upvotes: 6

Benson
Benson

Reputation: 22847

They solve different problems, LinkedHashMap does a mapping of keys to values, a LinkedHashSet simply stores a collection of things with no duplicates.

A linked hash map is for mapping key/value pairs -- for example, storing names and ages:

Map<String,Integer> namesAndAges = new LinkedHashMap<String,Integer>();
namesAndAges.put("Benson", 25);
namesAndAges.put("Fred", 19);

On the other hand, a linked hash set is for storing a collection of one thing -- names, for example:

Set<String> names = new LinkedHashSet<String>();
names.add("Benson");
names.add("Fred");

Upvotes: 22

Rickster
Rickster

Reputation: 220

A Set has just values, you cannot put duplicates in. a Map has a key/value pair. They have different uses.

A set will get used as a collection, passing in a group of objects, whereas a map is useful for when you have a unique key to identify each element and you want to be able to access it by that key.

Upvotes: 3

Rob
Rob

Reputation: 48369

One's a set, and one's a map. Choose the correct data structure for a given scenario.

Upvotes: 2

Related Questions