He probado a continuación el código

String s[]={"1","2","3","4"};  
Collection c=Arrays.asList(s);  
System.out.println(c.remove("1") +"  remove flag");  

System.out.println(" collcetion "+c);  

Yo estaba

Exception in thread "main" java.lang.UnsupportedOperationException  
at java.util.AbstractList.remove(Unknown Source)  
at java.util.AbstractList$Itr.remove(Unknown Source)  
at java.util.AbstractCollection.remove(Unknown Source)  
at test.main(test.java:26)  

Alguien me puede ayudar a resolver este problema?

  • ¿Cuál es la pregunta?
  • Es esta una entrada en el blog?
  • así que ya sabes la respuesta?
  • hola chicos, soy nuevo en stackoverflow y no saben mucho acerca de la funcionalidad de este sitio. He encontrado este problema, mientras que el trabajo y pensé que esto va a ser útiles a los demás. por lo que añade a esta pregunta.
  • Probablemente, usted debe leer las preguntas frecuentes. Este no es el lugar para publicar las preguntas que sabes la respuesta de
  • Usted puede responder a su pregunta. ASÍ que no escriba su respuesta en la misma pregunta agregar a continuación y aceptarlo. Esta pregunta no va a quedar como una pregunta sin respuesta
  • Sarkar, respondió a su propia pregunta.
  • Gracias por tu sugerencia, pero he añadido esto porque no he encontrado ninguna pregunta para que me ayuden en este problema y después de saber la solución, solo estoy tratando de ayudar a los demás.
  • Sí, lo sé. Pero eso no es cómo funciona 🙂
  • por cierto… gracias, esto me ahorra mucho tiempo 😉
  • me han resuelto este problema por mí mismo. que Inicialmente estaba en blanco sobre el tema. Pero después de investigar un poco he encontrado que Arrays.asList(s) devuelve inmodificable de la colección y así se produce una UnsupportedOperationException. Podemos resolver este problema mediante la creación de una nueva colección con la lista Collection c= new ArrayList(Arrays.asList(s)); o Collection c= new HashSet(Arrays.asList(s));

4 Comentarios

  1. 30

    Fácil evitar es sólo para pasar en la Lista en una ArrayList‘s constructor.

    Por ejemplo:

    Cadena valuesInArray[]={"1","2","3","4"}; 
    Lista de modifiableList = new ArrayList(Matrices.asList(valuesInArray)); 
    Sistema.a cabo.println(modifiableList.remove("1") + "quitar la bandera"); 
    Sistema.a cabo.println(" collcetion "+ modifiableList); 
    

    Respuesta:

    verdadero quitar la bandera

    collcetion [2, 3, 4]

  2. 26

    Una pequeña corrección: no, no es una inmodificable de la Colección. Sólo que no se admite la adición y eliminación de elementos, ya que está respaldado por la suministra la matriz y las matrices no son redimensionables. Pero admite operaciones como lista.set(índice, elemento)

    • realmente no entiendo por qué funciona, pero gracias Sean 😉
    • la mayoría del trabajo se hace en java.util.AbstractList, pero todos los métodos opcionales de los que tirar UnsupportedOperationException. Público implementaciones como ArrayList reemplazar estos no-op métodos, pero la implementación interna Collections$Arraylist utilizado por Arrays.asList(...) no invalida el método add. (pero no reemplazar el conjunto de los métodos mencionados más arriba)
  3. 3

    Yo tenía este problema, porque yo también era inicialización de mi lista con Arrays.asList:

    List<String> names = Arrays.asList("a", "b", "c");

    Para resolver el problema, he utilizado addAll lugar:

    List<String> names = new ArrayList<String>();
    names.addAll(Arrays.asList("a", "b", "c"));

    De esta manera usted puede editar la lista, agregar nuevos elementos o quitar.

  4. 0

    De la Lista devuelta por Arrays.asList método de java.util.Arrays de la clase es de un tamaño fijo de la lista de objetos que significa que los elementos no se pueden agregar o quitar de la lista.

    Para funciones como la Adición o Eliminación no puede ser operado en este tipo de Listas.

    La solución para agregar o quitar sin llegar java.lang.UnsupportedOperationException es ->

    List<String> strList= new ArrayList<>(Arrays.asList(strs));
    
    //Then Add or Remove can be called on such List
    
    newList.add("100");
    newList.remove("100");
    

Dejar respuesta

Please enter your comment!
Please enter your name here