This tutorial will teach us about the Java NavigableSet interface and its methods. We will use an example to help illustrate how these concepts work.NavigableSet in Java with Examples.
The NavigableSet interface represents a navigable set in the Java Collection Framework. It inherits from the SortedSet interface and provides navigation methods in addition to the sorting mechanisms of the SortedSet.
Since NavigableSet is an interface, we always need a class that extends this interface in order to create an object. You can use Generics to restrict the type of object that can be stored in a NavigableSet. This way, you can create a type-safe set.
// SortedSet implementation by TreeSet class
NavigableSet<String> numbers = new TreeSet<>();
// SortedSet implementation by TreeSet class
NavigableSet<String> numbers = new TreeSet<>();
// SortedSet implementation by TreeSet class
NavigableSet<String> numbers = new TreeSet<>();
Methods of NavigableSet
NavigableSet is an interface that can be used with a class that implements it. TreeSet is one such class. Let’s look at how to perform some common operations on TreeSet.
Adding Elements:
You can use the add() method to add an element to a NavigableSet. However, remember that the insertion order will not be retained if you’re using a TreeSet because it internally sorts values in ascending order by comparing them.
It’s important to keep in mind that duplicate elements are not allowed in a NavigableSet. All duplicate elements will be ignored. Additionally, Null values are not accepted by a NavigableSet.
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetAdd
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
System.out.println(sto);
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
publicclass NavigableSetAdd
{
publicstaticvoidmain(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
System.out.println(sto);
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetAdd
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
System.out.println(sto);
}
}
Accessing the Elements:
After adding elements to a data structure, we can use inbuilt methods like contains(), first(), last(), etc., to access the elements.
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetAccessing
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
// Printing All the Elements
System.out.println(sto);
String check = "Linux";
// Check if the above string exists
System.out.println("Contains: " + check + " - " + sto.contains(check));
// Print the first element
System.out.println("First Value is: " + sto.first());
// Print the last element
System.out.println("Last Value is: " + sto.last());
}
}
System.out.println("First Value is: " + sto.first());
// Print the last element
System.out.println("Last Value is: " + sto.last());
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetAccessing
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
// Printing All the Elements
System.out.println(sto);
String check = "Linux";
// Check if the above string exists
System.out.println("Contains: " + check + " - " + sto.contains(check));
// Print the first element
System.out.println("First Value is: " + sto.first());
// Print the last element
System.out.println("Last Value is: " + sto.last());
}
}
Removing the Elements:
You can remove values from the NavigableSet using the remove(), pollFirst(), or pollLast() methods.
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetRemove
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
sto.add("Windows");
sto.add("Mac");
sto.add("Dos");
//Print All the elements
System.out.println(sto);
// Removing the element
sto.remove("Dos");
System.out.println("After removing element " + sto);
// Remove the First element
sto.pollFirst();
System.out.println("After the removal of First Element " + sto);
// Remove the Last element
sto.pollLast();
System.out.println("After the removal of Last Element " + sto);
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
publicclass NavigableSetRemove
{
publicstaticvoidmain(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
sto.add("Windows");
sto.add("Mac");
sto.add("Dos");
//Print All the elements
System.out.println(sto);
// Removing the element
sto.remove("Dos");
System.out.println("After removing element " + sto);
// Remove the First element
sto.pollFirst();
System.out.println("After the removal of First Element " + sto);
// Remove the Last element
sto.pollLast();
System.out.println("After the removal of Last Element " + sto);
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetRemove
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
sto.add("Windows");
sto.add("Mac");
sto.add("Dos");
//Print All the elements
System.out.println(sto);
// Removing the element
sto.remove("Dos");
System.out.println("After removing element " + sto);
// Remove the First element
sto.pollFirst();
System.out.println("After the removal of First Element " + sto);
// Remove the Last element
sto.pollLast();
System.out.println("After the removal of Last Element " + sto);
}
}
Iterating through the NavigableSet:
There are various ways to iterate through the NavigableSet. The most common way is to use the enhanced for loop.
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetIterate
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
sto.add("Windows");
sto.add("Mac");
sto.add("Dos");
// Iterating
for (String value : sto)
System.out.print(value + ", ");
System.out.println();
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
publicclass NavigableSetIterate
{
publicstaticvoidmain(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
sto.add("Windows");
sto.add("Mac");
sto.add("Dos");
// Iterating
for(String value : sto)
System.out.print(value + ", ");
System.out.println();
}
}
package com.SoftwareTestingO.collections;
import java.util.NavigableSet;
import java.util.TreeSet;
public class NavigableSetIterate
{
public static void main(String[] args)
{
NavigableSet<String> sto = new TreeSet<String>();
// Elements are added using add() method
sto.add("Java");
sto.add("C");
sto.add("Linux");
sto.add("Java");
sto.add("Windows");
sto.add("Mac");
sto.add("Dos");
// Iterating
for (String value : sto)
System.out.print(value + ", ");
System.out.println();
}
}
Softwaretestingo Editorial Board
I love open-source technologies and am very passionate about software development. I like to share my knowledge with others, especially on technology that's why I have given all the examples as simple as possible to understand for beginners.
All the code posted on my blog is developed, compiled, and tested in my development environment. If you find any mistakes or bugs, Please drop an email to softwaretestingo.com@gmail.com, or You can join me on Linkedin.