Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Java Arrays
  • Java Strings
  • Java OOPs
  • Java Collection
  • Java 8 Tutorial
  • Java Multithreading
  • Java Exception Handling
  • Java Programs
  • Java Project
  • Java Collections Interview
  • Java Interview Questions
  • Java MCQs
  • Spring
  • Spring MVC
  • Spring Boot
  • Hibernate
Open In App
Next Article:
Set add() method in Java with Examples
Next article icon

Set in Java

Last Updated : 08 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report
Try it on GfG Practice
redirect icon

The Set Interface is present in java.util package and extends the Collection interface. It is an unordered collection of objects in which duplicate values cannot be stored. It is an interface that implements the mathematical set. This interface adds a feature that restricts the insertion of duplicate elements.

  • No Specific Order: Does not maintain any specific order of elements (Exceptions: LinkedHashSet and TreeSet).
  • Allows One Null Element: Most Set implementations allow a single null element.
  • Implementation Classes: HashSet, LinkedHashSet, and TreeSet.
  • Thread-Safe Alternatives: For thread-safe operations, use ConcurrentSkipListSet or wrap a set using Collections.synchronizedSet().

Two interfaces extend the set implementation, that are, SortedSet and NavigableSet.

Example: This example demonstrates how to create an empty HashSet.

Java
// Java Program to Implementing Set Interface import java.util.HashSet; import java.util.Set;  public class Geeks {        	public static void main(String args[])      {                  // Create a Set using HashSet         Set<String> s = new HashSet<>();          // Displaying the Set         System.out.println("Set Elements: " + s);     } } 

Output
Set Elements: [] 

Explanation: In the above example, HashSet will appear as an empty set, as no elements were added. The order of elements in HashSet is not guaranteed, so the elements will be displayed in a random order if any are added.

Hierarchy of Java Set interface

The image below demonstrates the hierarchy of Java Set interface.

corrected-dig

In the above image, the navigable set extends the sorted set interface. Since a set doesn't retain the insertion order, the navigable set interface provides the implementation to navigate through the Set. The class which implements the navigable set is a TreeSet which is an implementation of a self-balancing tree. Therefore, this interface provides us with a way to navigate through this tree.

Declaration of Set Interface

The declaration of Set interface is listed below:

public interface Set extends Collection 

Creating Set Objects:

Since Set is an interface, objects cannot be created of the typeset. We always need a class that extends this list in order to create an object. And also, after the introduction of Generics in Java 1.5, it is possible to restrict the type of object that can be stored in the Set. This type-safe set can be defined as:

// Obj is the type of the object to be stored in Set 
Set<Obj> set = new HashSet<Obj> (); 

Methods

Let us discuss methods present in the Set interface provided below in a tabular format below as follows:

MethodDescription
add(element)This method is used to add a specific element to the set. The function adds the element only if the specified element is not already present in the set else the function returns False if the element is already present in the Set.
addAll(collection)This method is used to append all of the elements from the mentioned collection to the existing set. The elements are added randomly without following any specific order.
clear()This method is used to remove all the elements from the set but not delete the set. The reference for the set still exists.
contains(element)This method is used to check whether a specific element is present in the Set or not.
containsAll(collection)This method is used to check whether the set contains all the elements present in the given collection or not. This method returns true if the set contains all the elements and returns false if any of the elements are missing.
hashCode()This method is used to get the hashCode value for this instance of the Set. It returns an integer value which is the hashCode value for this instance of the Set.
isEmpty()This method is used to check whether the set is empty or not.
iterator()This method is used to return the iterator of the set. The elements from the set are returned in a random order.
remove(element)This method is used to remove the given element from the set. This method returns True if the specified element is present in the Set otherwise it returns False.
removeAll(collection)This method is used to remove all the elements from the collection which are present in the set. This method returns true if this set changed as a result of the call.
retainAll(collection)This method is used to retain all the elements from the set which are mentioned in the given collection. This method returns true if this set changed as a result of the call.
size()This method is used to get the size of the set. This returns an integer value which signifies the number of elements.
toArray()This method is used to form an array of the same elements as that of the Set.

Example: Sample Program to Illustrate Set interface

Java
// Java program Illustrating Set Interface  // Importing utility classes import java.util.*;  // Main class  public class Geeks {        // Main driver method     public static void main(String[] args)     {         // Demonstrating Set using HashSet         // Declaring object of type String          Set<String> s = new HashSet<String>();          // Adding elements to the Set         // using add() method         s.add("Geeks");         s.add("For");         s.add("Geeks");         s.add("Example");         s.add("Set");          // Printing elements of HashSet object         System.out.println(s);     } } 

Output
[Set, Example, Geeks, For]

Explanation: In the above example, we can see the elements are in random order as HashSet does not maintain any order and duplicate elements are automatically ignored in HashSet.

Operations on the Set Interface

The set interface allows the users to perform the basic mathematical operation on the set. Let's take two arrays to understand these basic operations. Let set1 = [1, 3, 2, 4, 8, 9, 0] and set2 = [1, 3, 7, 5, 4, 0, 7, 5]. Then the possible operations on the sets are:

1. Intersection: This operation returns all the common elements from the given two sets. For the above two sets, the intersection would be:

Intersection = [0, 1, 3, 4] 

2. Union: This operation adds all the elements in one set with the other. For the above two sets, the union would be: 

Union = [0, 1, 2, 3, 4, 5, 7, 8, 9] 

3. Difference: This operation removes all the values present in one set from the other set. For the above two sets, the difference would be: 

Difference = [2, 8, 9]

Now, let us implement the following operations as defined above as follows:


Example: This example demonstrates how to perform various operations on set.

Java
// Java Program Demonstrating Operations on the Set // such as Union, Intersection and Difference operations   // Importing all utility classes import java.util.*;  // Main class  public class Geeks {        // Main driver method      public static void main(String args[])     {         // Creating an object of Set class          // Declaring object of Integer type          Set<Integer> a = new HashSet<Integer>();                // Adding all elements to List          a.addAll(Arrays.asList(             new Integer[] { 1, 3, 2, 4, 8, 9, 0 }));              // Again declaring object of Set class       // with reference to HashSet         Set<Integer> b = new HashSet<Integer>();                b.addAll(Arrays.asList(             new Integer[] { 1, 3, 7, 5, 4, 0, 7, 5 }));                   // To find union         Set<Integer> u = new HashSet<Integer>(a);         u.addAll(b);         System.out.print("Union of the two Set");         System.out.println(u);          // To find intersection         Set<Integer> i = new HashSet<Integer>(a);         i.retainAll(b);         System.out.print("Intersection of the two Set");         System.out.println(i);          // To find the symmetric difference         Set<Integer> d = new HashSet<Integer>(a);         d.removeAll(b);         System.out.print("Difference of the two Set");         System.out.println(d);     } } 

Output
Union of the two Set[0, 1, 2, 3, 4, 5, 7, 8, 9] Intersection of the two Set[0, 1, 3, 4] Difference of the two Set[2, 8, 9] 

Performing Various Operations on SortedSet

After the introduction of Generics in Java 1.5, it is possible to restrict the type of object that can be stored in the Set. Since Set is an interface, it can be used only with a class that implements this interface. HashSet is one of the widely used classes which implements the Set interface. Now, let’s see how to perform a few frequently used operations on the HashSet. We are going to perform the following operations as follows:

  1. Adding elements
  2. Accessing elements
  3. Removing elements
  4. Iterating elements
  5. Iterating through Set

Now let us discuss these operations individually as follows:

1. Adding Elements

In order to add an element to the Set, we can use the add() method. However, the insertion order is not retained in the Set. Internally, for every element, a hash is generated and the values are stored with respect to the generated hash. the values are compared and sorted in ascending order. We need to keep a note that duplicate elements are not allowed and all the duplicate elements are ignored. And also, Null values are accepted by the Set.

Example: This example demonstrates how HashSet stores unique element and does not maintain any insertion order.

Java
// Java Program Demonstrating Working of Set by // Adding elements using add() method   // Importing all utility classes import java.util.*;  // Main class class Geeks {      // Main driver method     public static void main(String[] args)     {         // Creating an object of Set and          // declaring object of type String         Set<String> s = new HashSet<String>();          // Adding elements to above object         // using add() method         s.add("B");         s.add("B");         s.add("C");         s.add("A");          // Printing the elements inside the Set object         System.out.println(s);     } } 

Output
[A, B, C]


2. Accessing the Elements

After adding the elements, if we wish to access the elements, we can use inbuilt methods like contains().

Example: This example demonstrates how to check if a specified element exists or not using the contains() method.

Java
// Java code to demonstrate Working of Set by // Accessing the Elements of the Set object  // Importing all utility classes import java.util.*;  // Main class class Geeks {      // Main driver method     public static void main(String[] args)     {         // Creating an object of Set and          // declaring object of type String         Set<String> h = new HashSet<String>();          // Elements are added using add() method         // Later onwards we will show accessing the same          // Custom input elements         h.add("A");         h.add("B");         h.add("C");         h.add("A");          // Print the Set object elements         System.out.println("Set is " + h);          // Declaring a string         String s = "D";          // Check if the above string exists in         // the SortedSet or not         // using contains() method         System.out.println("Contains " + s + " "                            + h.contains(s));     } } 

Output
Set is [A, B, C] Contains D false 


3. Removing the Values

The values can be removed from the Set using the remove() method.

Example: This example demonstrates how to remove element from a HashSet using remove() method

Java
// Java Program Demonstrating Working of Set by // Removing Element/s from the Set  // Importing all utility classes import java.util.*;  // Main class class Geeks {      // Main driver method     public static void main(String[] args)     {         // Declaring object of Set of type String         Set<String> h = new HashSet<String>();          // Elements are added         // using add() method          // Custom input elements         h.add("A");         h.add("B");         h.add("C");         h.add("B");         h.add("D");         h.add("E");          // Printing initial Set elements         System.out.println("Initial HashSet " + h);          // Removing custom element         // using remove() method         h.remove("B");          // Printing Set elements after removing an element         // and printing updated Set elements         System.out.println("After removing element " + h);     } } 

Output
Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]


4. Iterating through the Set

There are various ways to iterate through the Set. The most famous one is to use the enhanced for loop.

Example: This example demonstrates how to iterate through a HashSet.

Java
// Java Program to Demonstrate Working of Set by  // Iterating through the Elements   // Importing utility classes  import java.util.*;  // Main class  class Geeks {      // Main driver method     public static void main(String[] args)     {         // Creating object of Set and declaring String type         Set<String> h = new HashSet<String>();          // Adding elements to Set           // using add() method          // Custom input elements          h.add("A");         h.add("B");         h.add("C");         h.add("B");         h.add("D");         h.add("E");          // Iterating through the Set         // via for-each loop          for (String value : h)              // Printing all the values inside the object              System.out.print(value + ", ");                  System.out.println();     } } 

Output
A, B, C, D, E, 

Classes that implement the Set interface in Java Collections can be easily perceived from the image below as follows and are listed as follows:

  • HashSet
  • EnumSet
  • LinkedHashSet
  • TreeSet


Hierarchy of Java Collections

Java Collections Hierarchy


Class 1: HashSet 

HashSet class which is implemented in the collection framework is an inherent implementation of the hash table data structure. The objects that we insert into the HashSet do not guarantee to be inserted in the same order. The objects are inserted based on their hashcode. This class also allows the insertion of NULL elements. Let’s see how to create a set object using this class. 

Example: This example demonstrates how to add, remove, and iterate through elements in a HashSet.

Java
// Java program Demonstrating Creation of Set object // Using the Hashset class  // Importing utility classes import java.util.*;  // Main class class Geeks {      // Main driver method     public static void main(String[] args)     {         // Creating object of Set of type String         Set<String> h = new HashSet<String>();          // Adding elements into the HashSet         // using add() method          // Custom input elements         h.add("India");         h.add("Australia");         h.add("South Africa");          // Adding the duplicate element         h.add("India");          // Displaying the HashSet         System.out.println(h);          // Removing items from HashSet         // using remove() method         h.remove("Australia");         System.out.println("Set after removing "                            + "Australia:" + h);          // Iterating over hash set items         System.out.println("Iterating over set:");          // Iterating through iterators         Iterator<String> i = h.iterator();          // It holds true till there is a single element         // remaining in the object         while (i.hasNext())              System.out.println(i.next());     } } 

Output
[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India


Class 2: EnumSet

EnumSet class which is implemented in the collections framework is one of the specialized implementations of the Set interface for use with the enumeration type. It is a high-performance set implementation, much faster than HashSet. All of the elements in an enum set must come from a single enumeration type that is specified when the set is created either explicitly or implicitly. Let's see how to create a set object using this class. 

Example: This example demonstrates how to create and initialize a set using EnumSet.

Java
// Java program to demonstrate the // creation of the set object // using the EnumSet class import java.util.*;  enum Gfg { CODE, LEARN, CONTRIBUTE, QUIZ, MCQ } ;  public class Geeks {      public static void main(String[] args)     {         // Creating a set         Set<Gfg> s1;          // Adding the elements         s1 = EnumSet.of(Gfg.QUIZ, Gfg.CONTRIBUTE,                           Gfg.LEARN, Gfg.CODE);          System.out.println("Set 1: " + s1);     } } 

Output
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]


Class 3: LinkedHashSet

LinkedHashSet class which is implemented in the collections framework is an ordered version of HashSet that maintains a doubly-linked List across all elements. When the iteration order is needed to be maintained this class is used. When iterating through a HashSet the order is unpredictable, while a LinkedHashSet lets us iterate through the elements in the order in which they were inserted. Let's see how to create a set object using this class. 

Example: This example demonstrates how to use a LinkedHashSet to maintain insertion.

Java
// Java program to demonstrate the // creation of Set object using // the LinkedHashset class import java.util.*;  class Geeks {      public static void main(String[] args)     {         Set<String> lh = new LinkedHashSet<String>();          // Adding elements into the LinkedHashSet         // using add()         lh.add("India");         lh.add("Australia");         lh.add("South Africa");          // Adding the duplicate         // element         lh.add("India");          // Displaying the LinkedHashSet         System.out.println(lh);          // Removing items from LinkedHashSet         // using remove()         lh.remove("Australia");         System.out.println("Set after removing "                            + "Australia:" + lh);          // Iterating over linked hash set items         System.out.println("Iterating over set:");         Iterator<String> i = lh.iterator();         while (i.hasNext())             System.out.println(i.next());     } } 

Output
[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa


Class 4: TreeSet

TreeSet class which is implemented in the collections framework and implementation of the SortedSet Interface and SortedSet extends Set Interface. It behaves like a simple set with the exception that it stores elements in a sorted format. TreeSet uses a tree data structure for storage. Objects are stored in sorted, ascending order. But we can iterate in descending order using the method TreeSet.descendingIterator(). Let's see how to create a set object using this class.

Example: This example demonstrates how to use a TreeSet to store elements in a sorted order.

Java
// Java Program Demonstrating Creation of Set object // Using the TreeSet class  // Importing utility classes import java.util.*;  // Main class class Geeks {      // Main driver method     public static void main(String[] args)     {         // Creating a Set object and declaring it of String         // type         // with reference to TreeSet         Set<String> ts = new TreeSet<String>();          // Adding elements into the TreeSet         // using add()         ts.add("India");         ts.add("Australia");         ts.add("South Africa");          // Adding the duplicate         // element         ts.add("India");          // Displaying the TreeSet         System.out.println(ts);          // Removing items from TreeSet         // using remove()         ts.remove("Australia");         System.out.println("Set after removing "                            + "Australia:" + ts);          // Iterating over Tree set items         System.out.println("Iterating over set:");         Iterator<String> i = ts.iterator();          while (i.hasNext())             System.out.println(i.next());     } } 

Output
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa

Next Article
Set add() method in Java with Examples

K

kartik
Improve
Article Tags :
  • Java
  • Java-Collections
  • Java - util package
  • java-set
Practice Tags :
  • Java
  • Java-Collections

Similar Reads

    Set in Java
    The Set Interface is present in java.util package and extends the Collection interface. It is an unordered collection of objects in which duplicate values cannot be stored. It is an interface that implements the mathematical set. This interface adds a feature that restricts the insertion of duplicat
    14 min read
    Set add() method in Java with Examples
    The add() method of Set in Java is used to add a specific element into a Set collection. The set add() function adds the element only if the specified element is not already present in the set else the function returns False if the element is already present in the Set. Declaration of add() methodbo
    2 min read
    Set contains() method in Java with Examples
    The Java.util.Set.contains() method is used to check whether a specific element is present in the Set or not. So basically it is used to check if a Set contains any particular element. Syntax: boolean contains(Object element) Parameters: The parameter element is of the type of Set. This is the eleme
    2 min read
    Set remove() method in Java with Examples
    The java.util.Set.remove(Object O) method is used to remove a particular element from a Set. Syntax: boolean remove(Object O) Parameters: The parameter O is of the type of element maintained by this Set and specifies the element to be removed from the Set. Return Value: This method returns True if t
    1 min read
    Set addAll() Method in Java
    In Java, the addAll() method of the Set class is used to add all the elements of a specified collection to the current collection. The elements are added randomly without following any specific order.Example 1: This example demonstrates how to merge two TreeSet using the addAll() method.Java// Java
    2 min read
    Set clear() method in Java with Examples
    The Java.util.Set.clear() method is used to remove all the elements from a Set. Using the clear() method only clears all the element from the set and not deletes the set. In other words, we can say that the clear() method is used to only empty an existing Set. Syntax: void clear() Parameters: The me
    1 min read
    Set containsAll() Method in Java
    The containsAll() method of Set in Java is used to check if a collection contains all the elements of a specified collection. This method is part of the Collection interface. Example 1: This example checks if all elements of one set are present in another set and it will return true if they are iden
    2 min read
    Set hashCode() Method in Java
    In Java, the hashCode() method is defined in the Object class and is used to generate a hash code for objects. It plays a very important role in hash-based collections like HashMap, HashSet, and HashTable. Example 1: This example demonstrates how hashCode() is used to get the hash code of the HashSe
    2 min read
    Set iterator() method in Java with Examples
    The java.util.Set.iterator() method is used to return an iterator of the same elements as the set. The elements are returned in random order from what present in the set. Syntax: Iterator iterate_value = Set.iterator(); Parameters: The function does not take any parameter. Return Value: The method i
    1 min read
    Set removeAll() Method in Java
    In Java, the removeAll() method is part of the Collection interface. It is used to remove all elements from a collection that are present in another collection.Example 1: This example demonstrates how the removeAll() method removes all elements from the first set that are also present in the second
    2 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences