How to Loop Over TreeSet in Java?
Last Updated :
05 Mar, 2024
TreeSet is one of the most important implementations of the SortedSet interface in Java that uses a Tree for storage. The ordering of the elements is maintained by a set using their natural ordering whether or not an explicit comparator is provided. This must be consistent with equals if it is to correctly implement the Set interface.
Now the task is to explore out how many ways are there in order to loop over TreeSet. As we all know TreeSet provides an 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.

Following are some traits associated with TreeSet are as follows:
- 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().
- Access and retrieval times are very fast which make TreeSet an excellent choice for the storage of large volume of data in a sorted format.
- TreeSet doesn’t use hashCode() and equals() methods to compare it’s elements. It uses compare() (or compareTo()) method to determine the equality of two elements.
Methods:
Below we have listed various ways to iterate over the TreeSet in java which we are going to discuss further and will provide a clean java program for each of the following methods as follows:
- Using Enhanced For loop
- Using Iterator
- Using streams (from Java8 onwards)
Method 1: Using Enhanced For loop
Enhanced For loop can be used to loop over the TreeSet in the below manner.
Syntax:
for (Integer value : ts)
{
System.out.print(value);
}
Example
Java
// Java Program to Loop over TreeSet
// Using Enhanced For loop
// Importing required classes
import java.util.Iterator;
import java.util.TreeSet;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an empty TreeSet by
// declaring object of TreeSet class of Integer type
TreeSet<Integer> ts = new TreeSet<Integer>();
// Adding elements to above TreeSet object
ts.add(10);
ts.add(61);
ts.add(87);
ts.add(39);
// Display message for better readability
System.out.print("TreeSet: ");
// Looping over the TreeSet values
for (Integer value : ts)
// Print the values
System.out.print(value + ", ");
System.out.println();
}
}
OutputTreeSet: 10, 39, 61, 87,
Method 2: Using Iterator
Iterator can be created over the TreeSet objects. Hence this iterator can be used to traverse or loop through the TreeSet.
Syntax:
Iterator iterator = ts.iterator();
while (iterator.hasNext())
{
System.out.print(iterator.next());
}
Example
Java
// Java program to loop over TreeSet
// Using Iterator
// Importing required classes
import java.util.Iterator;
import java.util.TreeSet;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an empty TreeSet by
// declaring an object of TreeSet class
TreeSet<Integer> ts = new TreeSet<Integer>();
// Adding elements to above object of TreeSet class
// Using add() method
ts.add(10);
ts.add(61);
ts.add(87);
ts.add(39);
// Create an Iterator over the TreeSet
Iterator<Integer> iterator = ts.iterator();
// Display message for better readability
System.out.print("TreeSet: ");
// Looping over the TreeSet values
while (iterator.hasNext())
// Print all the values inside TreeSet object
System.out.print(iterator.next() + ", ");
System.out.println();
}
}
OutputTreeSet: 10, 39, 61, 87,
Method 3: Using Java 8 forEach / stream:
Java 8 forEach / stream can be used to loop over the TreeSet in the below manner.
Syntax:
Tree_Set.forEach(iterator -> System.out.print(i + " "));
// Using forEach
Tree_Set.stream().map(iterator -> String.valueOf(i)).collect(Collectors.joining(", "))
// Using stream
Example
Java
// Java program to loop over TreeSet
// Using For-each and Stream in Java8
// Importing required classes
import java.util.Arrays;
import java.util.Iterator;
import java.util.TreeSet;
import java.util.stream.Collectors;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an empty TreeSet if integer type
TreeSet<Integer> ts = new TreeSet<Integer>();
// Adding elements to the TreeSet
// using addAll() method
ts.addAll(Arrays.asList(10, 61, 87, 39));
// Looping over the TreeSet & print values
System.out.print("TreeSet without Comma: ");
// Iterating through the TreeSet
// using forEach
ts.forEach(i -> System.out.print(i + " "));
System.out.println();
// Looping over the TreeSet & print values
System.out.print("TreeSet with Comma: ");
// Iterating through the TreeSet
// Using stream concept introduced in Java8
System.out.print(
ts.stream()
.map(i -> String.valueOf(i))
.collect(Collectors.joining(", ")));
}
}
OutputTreeSet without Comma: 10 39 61 87
TreeSet with Comma: 10, 39, 61, 87
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
AbstractSet Class in Java In Java, the AbstractSet class is part of the Java Collections Framework. It provides a Skeleton implementation of the set interface, which is a collection that does not allow duplicate elements. This class is abstract, meaning it cannot be instantiated directly, but it can be extended to create a c
8 min read
EnumSet in Java In Java, the EnumSet is a specialized set implementation for use with enum types. It is a part of java.util package and provides a highly optimized set for storing enum constants. The EnumSet is one of the specialized implementations of the Set interface for use with the enumeration type.It extends
9 min read
Java HashSet HashSet in Java implements the Set interface of Collections Framework. It is used to store the unique elements and it doesn't maintain any specific order of elements. Can store the Null values.Uses HashMap (implementation of hash table data structure) internally.Also implements Serializable and Clon
12 min read
TreeSet in Java TreeSet is one of the most important implementations of the SortedSet interface in Java that uses a Tree(red - black tree) for storage. The ordering of the elements is maintained by a set using their natural ordering whether or not an explicit comparator is provided. This must be consistent with equ
13 min read
ConcurrentSkipListSet in Java In Java, the ConcurrentSkipListSet is the part of the java.util.concurrent package and provides a scalable, thread-safe alternative to TreeSet. It is a sorted set that lets multiple threads safely access and modify the set at the same time without causing issues.It is thread-safe.Elements are in sor
7 min read
CopyOnWriteArraySet in Java In Java, the CopyOnWriteArraySet is the part of the java.util.concurrent package and is used to handle thread-safe operations in multi-threaded environments. It is ideal when the set is frequently read but infrequently modified. The set ensures safe access for multiple threads, as it creates a new c
6 min read
Java LinkedHashSet LinkedHashSet in Java implements the Set interface of the Collection Framework. It combines the functionality of a HashSet with a LinkedList to maintain the insertion order of elements. Stores unique elements only.Maintains insertion order.Provides faster iteration compared to HashSet.Allows null el
8 min read
Convert HashSet to TreeSet in Java Hashset: Hashset in Java is generally used for operations like search, insert and delete. It takes constant time for these operations on average. HashSet is faster than TreeSet. HashSet is Implemented using a hash table. TreeSet: TreeSet in Java takes O(log n) for search, insert and delete which is
3 min read
Difference and similarities between HashSet, LinkedHashSet and TreeSet in Java In this article, we will learn, the difference between HashSet vs LinkedHashSet and TreeSet And similarities between LinkedHashSet and TreeSet. HashSet, LinkedHashSet, and TreeSet all implement the Set interface. So we have tried to list out the differences and similarities between HashSet, LinkedHa
6 min read