views:

1607

answers:

5

I was just wondering if someone could espouse for me the main benefits for choosing one over the other and the detriments that come with that choice.

+2  A: 

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

Rob
+3  A: 

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.

Rickster
+12  A: 

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");
Benson
I was just looking the source code of the ArrayList just to make sure that I had to use a Set (which has good search performance) instead of an ArrayList (which has to traverse all the records to find something)
Ravi Wallau
The purpose of LinkedHashMap over HashMap is that LinkedHashMap also uses a LinkedList internally to store the order the key/value pairs have been added. So iterating over the LinkedHashMap will result in key/value pair in the order they were added while a classic HashMap will iterate based on the order of the hashcode of each key.
Vincent Robert
That's correct, but since the question was comparing LinkedHashMaps to LinkedHashSets I decided to focus on the differences, rather than the commonalities. :-)
Benson
Fine with me Benson, that's why I'm only adding a comment. I just thought the author was not that experienced with Java and wanted to add some more information :)
Vincent Robert
+1  A: 
Roman Kagan
+1  A: 

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.

DKSRathore