NavigableSet en Java con ejemplos

NavigableSet representa un conjunto navegable en Java Collection Framework . La interfaz NavigableSet hereda de la interfaz SortedSet . Se comporta como un SortedSet con la excepción de que tenemos métodos de navegación disponibles además de los mecanismos de clasificación de SortedSet. 
Por ejemplo, la interfaz NavigableSet puede navegar por el conjunto en orden inverso en comparación con el orden definido en SortedSet. Se puede acceder y recorrer un NavigableSet en orden ascendente o descendente. Las clases que implementan esta interfaz son TreeSet y ConcurrentSkipListSet .

NavigableSet in Java with Examples

Aquí, E es el tipo de elementos que mantiene este conjunto.

Todas las superinterfaces:

Colección<E>, Iterable<E>, Conjunto<E> , Conjunto ordenado<E>

Todas las clases de implementación conocidas:

ConcurrentSkipListSet , TreeSet<E>

Declaración: el NavigableSet se declara como

la interfaz pública NavigableSet<E> extiende SortedSet<E> 

Creación de objetos NavigableSet

Dado que NavigableSet es una interfaz, no se pueden crear objetos del tipo NavigableSet. Siempre necesitamos una clase que amplíe esta lista para crear un objeto. Y también, después de la introducción de Generics en Java 1.5, es posible restringir el tipo de objeto que se puede almacenar en el NavigableSet. Este conjunto de tipo seguro se puede definir como:

// Obj es el tipo de objeto que se almacenará en NavigableSet

NavigableSet<Obj> set = new TreeSet<Obj>();

Ejemplo:

Java

// Java program to demonstrate
// the working of NavigableSet
import java.util.NavigableSet;
import java.util.TreeSet;
 
public class NavigableSetDemo
{
    public static void main(String[] args)
    {
        NavigableSet<Integer> ns = new TreeSet<>();
        ns.add(0);
        ns.add(1);
        ns.add(2);
        ns.add(3);
        ns.add(4);
        ns.add(5);
        ns.add(6);
 
        // Get a reverse view of the navigable set
        NavigableSet<Integer> reverseNs = ns.descendingSet();
 
        // Print the normal and reverse views
        System.out.println("Normal order: " + ns);
        System.out.println("Reverse order: " + reverseNs);
 
        NavigableSet<Integer> threeOrMore = ns.tailSet(3, true);
        System.out.println("3 or  more:  " + threeOrMore);
        System.out.println("lower(3): " + ns.lower(3));
        System.out.println("floor(3): " + ns.floor(3));
        System.out.println("higher(3): " + ns.higher(3));
        System.out.println("ceiling(3): " + ns.ceiling(3));
 
        System.out.println("pollFirst(): " + ns.pollFirst());
        System.out.println("Navigable Set:  " + ns);
 
        System.out.println("pollLast(): " + ns.pollLast());
        System.out.println("Navigable Set:  " + ns);
 
        System.out.println("pollFirst(): " + ns.pollFirst());
        System.out.println("Navigable Set:  " + ns);
 
        System.out.println("pollFirst(): " + ns.pollFirst());
        System.out.println("Navigable Set:  " + ns);
 
        System.out.println("pollFirst(): " + ns.pollFirst());
        System.out.println("Navigable Set:  " + ns);
 
        System.out.println("pollFirst(): " + ns.pollFirst());
        System.out.println("pollLast(): " + ns.pollLast());
    }
}
Producción

Normal order: [0, 1, 2, 3, 4, 5, 6]
Reverse order: [6, 5, 4, 3, 2, 1, 0]
3 or  more:  [3, 4, 5, 6]
lower(3): 2
floor(3): 3
higher(3): 4
ceiling(3): 3
pollFirst(): 0
Navigable Set:  [1, 2, 3, 4, 5, 6]
pollLast(): 6
Navigable Set:  [1, 2, 3, 4, 5]
pollFirst(): 1
Navigable Set:  [2, 3, 4, 5]
pollFirst(): 2
Navigable Set:  [3, 4, 5]
pollFirst(): 3
Navigable Set:  [4, 5]
pollFirst(): 4
pollLast(): 5


Realización de varias operaciones en NavigableSet

Dado que NavigableSet es una interfaz, solo se puede usar con una clase que implemente esta interfaz. TreeSet es la clase que implementa la interfaz NavigableSet. Ahora, veamos cómo realizar algunas operaciones de uso frecuente en el TreeSet.

1. Agregar elementos: para agregar un elemento al NavigableSet, podemos usar el método add() . Sin embargo, el orden de inserción no se conserva en el TreeSet. Internamente, para cada elemento, los valores se comparan y clasifican en orden ascendente. Debemos tener en cuenta que los elementos duplicados no están permitidos y todos los elementos duplicados se ignoran. Además, el NavigableSet no acepta valores nulos.

Java

// Java code to demonstrate
// adding of elements in
// NavigableSet
import java.util.*;
import java.io.*;
 
class NavigableSetDemo {
 
    public static void main(String[] args)
    {
        NavigableSet<String> ts = new TreeSet<String>();
 
        // Elements are added using add() method
        ts.add("A");
        ts.add("B");
        ts.add("C");
        ts.add("A");
 
        System.out.println(ts);
    }
}

Producción:

[A, B, C]


2. Accediendo a los Elementos: Después de agregar los elementos, si deseamos acceder a los elementos, podemos usar métodos incorporados como contains(), first(), last(), etc.

Java

// Java program to access
// the elements of NavigableSet
import java.util.*;
import java.io.*;
 
class NavigableSetDemo {
 
    public static void main(String[] args)
    {
        NavigableSet<String> ts = new TreeSet<String>();
 
        // Elements are added using add() method
        ts.add("A");
        ts.add("B");
        ts.add("C");
        ts.add("A");
 
        System.out.println("Navigable Set is " + ts);
 
        String check = "D";
 
        // Check if the above string exists in
        // the NavigableSet or not
        System.out.println("Contains " + check + " "
                           + ts.contains(check));
 
        // Print the first element in
        // the NavigableSet
        System.out.println("First Value " + ts.first());
 
        // Print the last element in
        // the NavigableSet
        System.out.println("Last Value " + ts.last());
    }
}

Producción:

Navigable Set is [A, B, C]
Contains D false
First Value A
Last Value C


3. Eliminación de los valores: los valores se pueden eliminar del NavigableSet utilizando los métodos remove(), pollFirst(), pollLast().

Java

// Java Program to remove the
// elements from NavigableSet
import java.util.*;
import java.io.*;
 
class NavigableSetDemo {
 
    public static void main(String[] args)
    {
        NavigableSet<String> ts = new TreeSet<String>();
 
        // Elements are added using add() method
        ts.add("A");
        ts.add("B");
        ts.add("C");
        ts.add("B");
        ts.add("D");
        ts.add("E");
 
        System.out.println("Initial TreeSet " + ts);
 
        // Removing the element b
        ts.remove("B");
 
        System.out.println("After removing element " + ts);
 
        // Remove the First element of TreeSet
        ts.pollFirst();
 
        System.out.println(
            "After the removal of First Element " + ts);
 
        // Remove the Last element of TreeSet
        ts.pollLast();
 
        System.out.println(
            "After the removal of Last Element " + ts);
    }
}

Producción:

Initial TreeSet [A, B, C, D, E]
After removing element [A, C, D, E]
After the removal of First Element [C, D, E]
After the removal of Last Element [C, D]


4. Iterando a través de NavigableSet: Hay varias formas de iterar a través de NavigableSet. El más famoso es usar el bucle for mejorado.

Java

// Java program to iterate
// through NavigableSet
 
import java.util.*;
import java.io.*;
 
class NavigableSetDemo {
   
    public static void main(String[] args)
    {
        NavigableSet<String> ts = new TreeSet<String>();
 
        // Elements are added using add() method
        ts.add("C");
        ts.add("D");
        ts.add("E");
        ts.add("A");
        ts.add("B");
        ts.add("Z");
 
        // Iterating though the NavigableSet
        for (String value : ts)
            System.out.print(value + ", ");
        System.out.println();
    }
}

Producción:

A, B, C, D, E, Z,  


Métodos de conjunto navegable

Los siguientes son los métodos presentes en la interfaz NavigableSet. 

MÉTODO

DESCRIPCIÓN

 techo​(E e) Devuelve el menor elemento de este conjunto mayor o igual que el elemento dado, o nulo si no existe tal elemento.
iterador descendente() Devuelve un iterador sobre los elementos de este conjunto, en orden descendente.
descendingSet() Devuelve una vista en orden inverso de los elementos contenidos en este conjunto.
piso​(E e) Devuelve el mayor elemento de este conjunto menor o igual que el elemento dado, o nulo si no existe tal elemento.
headSet​(E a Elemento) Devuelve una vista de la parte de este conjunto cuyos elementos son estrictamente menores que toElement.
headSet​(E toElement, booleano inclusive) Devuelve una vista de la parte de este conjunto cuyos elementos son menores que (o iguales, si inclusive es verdadero) a Elemento.
mayor​(E e) Devuelve el elemento mínimo de este conjunto estrictamente mayor que el elemento dado, o nulo si no existe tal elemento.
iterador() Devuelve un iterador sobre los elementos de este conjunto, en orden ascendente.
inferior​(E e) Devuelve el mayor elemento de este conjunto estrictamente menor que el elemento dado, o nulo si no existe tal elemento.
sondearprimero() Recupera y elimina el primer elemento (el más bajo), o devuelve un valor nulo si este conjunto está vacío.
última encuesta() Recupera y elimina el último elemento (más alto), o devuelve un valor nulo si este conjunto está vacío.

subconjunto​(E fromElement, booleano

fromInclusive, E toElement, boolean toInclusive)

Devuelve una vista de la parte de este conjunto cuyos elementos van desde fromElement hasta toElement.
subConjunto​(E deElemento, E aElemento) Devuelve una vista de la parte de este conjunto cuyos elementos van desde fromElement, inclusive, hasta toElement, exclusivo.
tailSet​(E fromElement) Devuelve una vista de la parte de este conjunto cuyos elementos son mayores o iguales que fromElement.
tailSet​(E fromElement, booleano inclusive) Devuelve una vista de la parte de este conjunto cuyos elementos son mayores que (o iguales, si inclusive es verdadero) fromElement.

                                                                                                                                              
Métodos heredados de la interfaz java.util.SortedSet

MÉTODO

DESCRIPCIÓN

comparador()  Este método devuelve el comparador utilizado para ordenar los elementos de este conjunto, o nulo si este conjunto utiliza la ordenación natural de sus elementos.
primero() Este método devuelve el primer elemento (más bajo) presente en este conjunto.
ultimo() Este método devuelve el último (más alto) elemento presente en el conjunto.
divisor() Crea un Spliterator sobre los elementos de este conjunto ordenado.

Métodos heredados de la interfaz java.util.Set

MÉTODO

DESCRIPCIÓN

añadir (elemento) Este método se utiliza para agregar un elemento específico al conjunto. La función agrega el elemento solo si el elemento especificado aún no está presente en el conjunto; de lo contrario, la función devuelve False si el elemento ya está presente en el Conjunto.
addAll(colección)  Este método se utiliza para agregar todos los elementos de la colección mencionada al conjunto existente. Los elementos se añaden aleatoriamente sin seguir ningún orden específico.
clear()   Este método se utiliza para eliminar todos los elementos del conjunto pero no eliminar el conjunto. La referencia para el conjunto todavía existe.
contiene (elemento) Este método se utiliza para comprobar si un elemento específico está presente en el Conjunto o no.
contieneTodo(colección) 

Este método se utiliza para verificar si el conjunto contiene todos los elementos presentes en la colección dada o no.

Este método devuelve verdadero si el conjunto contiene todos los elementos y devuelve falso si falta alguno de los elementos.

es igual() Compara el objeto especificado con este conjunto para la igualdad.
código hash()  Este método se usa para obtener el valor hashCode para esta instancia del Conjunto. Devuelve un valor entero que es el valor hashCode para esta instancia del Conjunto.
esta vacio() Este método se utiliza para comprobar si un NavigableSet está vacío o no.
eliminar (elemento) Este método se utiliza para eliminar el elemento dado del conjunto. Este método devuelve True si el elemento especificado está presente en el Conjunto; de lo contrario, devuelve False.
removeAll(colección) Este método se utiliza para eliminar todos los elementos de la colección que están presentes en el conjunto. Este método devuelve verdadero si este conjunto cambió como resultado de la llamada.
retenerTodo(colección) Este método se utiliza para retener todos los elementos del conjunto que se mencionan en la colección dada. Este método devuelve verdadero si este conjunto cambió como resultado de la llamada.
Talla() Este método se utiliza para obtener el tamaño del conjunto. Esto devuelve un valor entero que significa el número de elementos.
aArray() Este método se utiliza para formar una array de los mismos elementos que el Conjunto.
 a la Array​(T[] a) Devuelve una array que contiene todos los elementos de este conjunto; el tipo de tiempo de ejecución de la array devuelta es el de la array especificada.

Métodos declarados en la interfaz java.util.Collection

MÉTODO DESCRIPCIÓN
flujoParalelo() Devuelve un Stream posiblemente paralelo con esta colección como fuente.
removeIf​(predicado<? filtro super E>) Elimina todos los elementos de esta colección que satisfacen el predicado dado.
corriente() Devuelve un Stream secuencial con esta colección como fuente.
toArray​(IntFunction<T[]> generador) Devuelve una array que contiene todos los elementos de esta colección, utilizando la función de generador proporcionada para asignar la array devuelta.

Métodos declarados en la interfaz java.lang.Iterable

MÉTODO DESCRIPCIÓN
forEach​(Consumidor<? super T> acción) Realiza la acción dada para cada elemento del iterable hasta que se hayan procesado todos los elementos o la acción genere una excepción.

Este artículo es una contribución de Pratik Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *