Explain Codes LogoExplain Codes Logo

What is the difference between Set and List?

java
collections
performance
best-practices
Nikita BarsukovbyNikita Barsukov·Sep 18, 2024
TLDR

Set is a collection that refrains from duplicate values and doesn't promise any order of its elements. List, being more agreeable, tolerates duplicates and thoughtfully retains the insertion order.

Set<String> hashSet = new HashSet<>(Arrays.asList("apple", "banana", "apple")); //hashSet says: "An apple a day, not two" List<String> arrayList = new ArrayList<>(Arrays.asList("apple", "banana", "apple")); // arrayList says: "The more apples, the merrier"

For the HashSet, the duplicate "apple" simply does not exist. The ArrayList welcomes both "apple" entries and keeps them in their order.

A taste of List and Set

Performance implications for culinary delight

Whip up efficient applications with List and Set by understanding their performance nuances. The LinkedList operates like a sushi conveyor belt, quick at adding and removing dishes in the middle. An ArrayList behaves like a DIY salad bar where access to all the ingredients is direct. On the other hand, the HashSet is like a quick counter serving unique dishes in no time.

Select your kitchen tool: List or Set

Are you planning a party with a guest list? If you need to avoid duplicate guests and sequence doesn't matter, Set is your bouncer at the door. But, if the party requires a specific play order for party games, get a List.

When HashSet, LinkedHashSet, and TreeSet walk into a kitchen

Here are some utilities in your kitchen. LinkedHashSet is a magical pot, keeping the insertion order while ensuring no duplicate ingredients. A TreeSet, is your sous chef sorting out your ingredients as per their recipe order or as you specify.

Deeper Dive into List and Set

LinkedHashSet: The balancing act between List and Set

When you need uniqueness and order both, LinkedHashSet has got your back. This unique collection is like a library which ensures all books are different (uniqueness) and yet they are well-arranged for quick access (order).

TreeSet: Sorted and lean

A TreeSet not only keeps things neat but also sorts them for you. It’s like having a robotic housekeeper that keeps everything clean and organized.

ArrayList vs LinkedList: A friendly feud

Imagine an ArrayList as a vending machine with direct access to all items (random access), while a LinkedList is more like a magician's hat, where one needs to go through each item (sequential access) to get to the desired one.