The main difference is that LinkedHashSet preserves the order of insertion of elements, but HashSet does not. At the same time, LinkedHashSet as well as HashSet uses a hash table, unlike the same TreeSet .
HashSet example:
HashSet dset = new HashSet(); dset.add(new Dog(2)); dset.add(new Dog(1)); dset.add(new Dog(3)); dset.add(new Dog(5)); dset.add(new Dog(4)); Iterator iterator = dset.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); }
Result: 5 3 2 1 4
LinkedHashSet example:
LinkedHashSet dset = new LinkedHashSet(); dset.add(new Dog(2)); dset.add(new Dog(1)); dset.add(new Dog(3)); dset.add(new Dog(5)); dset.add(new Dog(4)); Iterator iterator = dset.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); }
Result: 2 1 3 5 4
HashSet? - D-side