¿Por qué NULL no está permitido en Java TreeSet?

TreeSet es una de las implementaciones más importantes de la interfaz SortedSet en Java que utiliza un árbol para el almacenamiento. El orden de los elementos se mantiene mediante un conjunto utilizando su orden natural, se proporcione o no un comparador explícito . Esto debe ser consistente con equals si se quiere implementar correctamente la interfaz Set .

Ejemplo:

Java

// Java Program to illustrate the TreeSet
import java.util.*;
  
class GFG {
    
    public static void main(String args[])
    {
        // Creating TreeSet and adding elements to it
        TreeSet<String> tree_set = new TreeSet<String>();
        
        tree_set.add("Manish");
        tree_set.add("Kartik");
        tree_set.add("Anand");
        tree_set.add("Sahil");
  
        // Traversing elements of TreeSet
        Iterator<String> it = tree_set.iterator();
  
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}
Producción

Anand
Kartik
Manish
Sahil

Agregar valor nulo a TreeSet

En este ejemplo, vamos a agregar un valor NULL en TreeSet, lo que nos dará una excepción.

Java

// Adding NULL value to Java TreeSet
import java.util.TreeSet;
  
public class Example2 {
    public static void main(String[] args)
    {
        // Creating TreeSet and adding elements to it
        TreeSet<String> tree_Set = new TreeSet<String>();
        tree_Set.add("ABC");
        tree_Set.add(null);
  
        // Printing TreeSet elements
        System.out.println(tree_Set);
    }
}

Producción

Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.TreeMap.put(TreeMap.java:561)
    at java.base/java.util.TreeSet.add(TreeSet.java:255)
    at Example2.main(Example2.java:10)

Explicación: De forma predeterminada, TreeSet utiliza internamente la interfaz Comparable para ordenar los elementos. Ahora, en la interfaz comparable, el método compareTo() se usa para comparar un valor con otro para ordenar los elementos. 

Entonces, debido a este propósito, null no tiene valor, es por eso que el método compareTo() no puede comparar null con otro valor, dando una NullPointerException .

añadir declaración de método

public boolean add(E e) throws ClassCastException, NullPointerExeption;

Si intentamos agregar valores nulos en TreeSet, generará una NullPointerException en el tiempo de ejecución.

Publicación traducida automáticamente

Artículo escrito por piyushkr2022 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 *