¿Cómo resolver la excepción de operación no admitida de la lista de Java?

La UnsupportedOperationException es una de las excepciones comunes que ocurren cuando estamos trabajando con alguna API de implementación de listas. Se lanza para indicar que la operación solicitada no es compatible.

Esta clase es miembro de Java Collections Framework.

Todos los errores de Java implementan la interfaz java.lang.Throwable o se heredan de otra clase. La jerarquía de esta Excepción es-

  java.lang.Objeto

         java.lang.Throwable

                   java.lang.Excepción

                          java.lang.RuntimeException

                                  java.lang.UnsupportedOperationException

Sintaxis:

public class UnsupportedOperationException
extends RuntimeException

La razón principal detrás de la aparición de este error es que el método asList de la clase java.util.Arrays devuelve un objeto de ArrayList que está anidado dentro de la clase java.util.Arrays . ArrayList extiende java.util.AbstractList y no implementa el método de agregar o quitar. Por lo tanto, cuando se llama a este método en el objeto de la lista, llama para agregar o eliminar el método de la clase AbstractList que arroja esta excepción. Además, la lista devuelta por el método asList es una lista de tamaño fijo, por lo que no se puede modificar.

El siguiente ejemplo dará como resultado una excepción de operación no admitida, ya que está tratando de agregar un nuevo elemento a un objeto de lista de tamaño fijo.

Java

import java.util.Arrays;
import java.util.List;
  
public class Example {
    public static void main(String[] args)
    {
        String str[] = { "Apple", "Banana" };
        List<String> l = Arrays.asList(str);
        System.out.println(l);
  
        // It will throw java.lang.UnsupportedOperationException
  
        l.add("Mango");
    }
}

Producción:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.base/java.util.AbstractList.add(AbstractList.java:153)
    at java.base/java.util.AbstractList.add(AbstractList.java:111)
    at Example.main(Example.java:14)

Podemos resolver este problema usando una lista mutable que se puede modificar, como una ArrayList . Creamos una Lista usando el método Arrays.asList como lo estábamos usando antes y pasamos esa Lista resultante para crear un nuevo objeto ArrayList. 

Java

import java.util.ArrayList;
import java.util.List;
import java.util.*;
  
public class Example {
  
    public static void main(String[] args) {
        
        String str[] = { "Apple", "Banana" };
        List<String> list = Arrays.asList(str); 
       
        List<String> l = new ArrayList<>(list);
          
  
        l.add("Mango"); // modify the list
  
        for(String s: l )
          System.out.println(s);
  
    }
  
}
Producción

Apple
Banana
Mango

Publicación traducida automáticamente

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