What is the Difference Between List, Set, and Map in Java?

What is the Difference Between List, Set, and Map in Java? Detailed Explanation with Code Examples

A comprehensive guide to understanding the key differences and use cases for List, Set, and Map in Java collections

Introduction

In Java, collections are crucial for storing, manipulating, and managing groups of objects. The Java Collections Framework provides several interfaces that represent different types of collections, including List, Set, and Map. These three are some of the most commonly used interfaces and offer different features and use cases depending on your requirements.

This guide will explain the core differences between these three interfaces and provide code examples to illustrate their practical usage.

What is a List?

A List is an ordered collection that allows duplicate elements. It maintains the insertion order, meaning elements are stored in the order they are added. Lists allow random access, and elements can be accessed by their index position.

Key Features of List:

  • Ordered (elements are in a specific sequence)
  • Allows duplicates
  • Elements can be accessed by index

Common Implementations:

  • ArrayList
  • LinkedList

Code Example: Using List

import java.util.*;

public class ListExample {
    public static void main(String[] args) {
        List fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Apple"); // Duplicates are allowed

        System.out.println("Fruits List: " + fruits);
        System.out.println("First fruit: " + fruits.get(0)); // Access by index
    }
}
        

In the above example, we used an ArrayList implementation of the List interface. Notice that we added a duplicate item, which is allowed in a List.

What is a Set?

A Set is a collection that does not allow duplicates and does not guarantee any specific order of elements. It is useful when you want to ensure that no element is repeated in the collection.

Key Features of Set:

  • No duplicates allowed
  • Does not guarantee order (unless using a LinkedHashSet)

Common Implementations:

  • HashSet
  • LinkedHashSet
  • TreeSet

Code Example: Using Set

import java.util.*;

public class SetExample {
    public static void main(String[] args) {
        Set fruitsSet = new HashSet<>();
        fruitsSet.add("Apple");
        fruitsSet.add("Banana");
        fruitsSet.add("Orange");
        fruitsSet.add("Apple"); // Duplicates are not allowed

        System.out.println("Fruits Set: " + fruitsSet);
    }
}
        

In this example, we used a HashSet, which does not allow duplicates. If we try to add the same element again, it will be ignored.

What is a Map?

A Map is a collection that stores key-value pairs. Each key is unique, and it maps to exactly one value. Unlike List and Set, a Map allows you to store related objects, where the key is used for lookup.

Key Features of Map:

  • Stores key-value pairs
  • Each key is unique
  • Values can be accessed using keys

Common Implementations:

  • HashMap
  • LinkedHashMap
  • TreeMap

Code Example: Using Map

import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        Map fruitPrices = new HashMap<>();
        fruitPrices.put("Apple", 1);
        fruitPrices.put("Banana", 2);
        fruitPrices.put("Orange", 3);

        System.out.println("Fruit Prices: " + fruitPrices);
        System.out.println("Price of Apple: " + fruitPrices.get("Apple"));
    }
}
        

In this code, we use a HashMap to store fruit names as keys and their respective prices as values. We access the price of an item using the key.

Key Differences Between List, Set, and Map

Feature List Set Map
Duplicates Allows duplicates Does not allow duplicates Allows duplicate values, but keys must be unique
Order Maintains insertion order No guaranteed order (unless using LinkedHashSet) May or may not maintain order (depends on the implementation, e.g., LinkedHashMap maintains insertion order)
Access Method Index-based Not index-based (elements are accessed through iteration) Key-based access
Use Case When order matters, and duplicates are allowed When uniqueness is required When associating keys with values

Conclusion

Understanding the differences between List, Set, and Map is essential for writing efficient Java programs. Each data structure offers unique features that make them suitable for different use cases. Whether you’re storing ordered data, ensuring uniqueness, or associating values with keys, knowing when and how to use these collections will make your Java programming experience much easier.

Copyright © 2024 Tech Interview Guide. All rights reserved.

Please follow and like us:

Leave a Comment