Listas Java: diferencia entre la asignación al crear instancias y después

Este error solo ocurre cuando asigno valores a una matrizLista después de que se haya instanciado. Este es el error

Esto solo ocurre cuando el código es así:

String line = scanner.nextLine();
line = line.replaceAll("[^A-Za-z]", " ");
line = line.toLowerCase();
List<String> words = new ArrayList<String>();
words = Arrays.asList(line.split(" "));
words.removeAll(Arrays.asList("", null));
System.out.println(Arrays.toString(words.toArray()));

El programa funciona bien cuando el código es así:

String line = scanner.nextLine();
line = line.replaceAll("[^A-Za-z]", " ");
line = line.toLowerCase();
List<String> words = new ArrayList<String>(Arrays.asList(line.split(" ")));
words.removeAll(Arrays.asList("", null));
System.out.println(Arrays.toString(words.toArray()));

Gracias por cualquier tipo de explicación adicional y consejos :)

Respuesta 1

Este error solo ocurre cuando asigno valores a una matrizLista después de que se haya instanciado.

Eso no es lo que estás haciendo aquí:

List<String> words = new ArrayList<String>();
words = Arrays.asList(line.split(" "));

Está asignando un vacío ArrayLista words, y luego asigna un diferente List, creado por Arrays.asList(line.split(" ")), a words. Ese segundo Listes de tamaño fijo List, por lo que no puede eliminar elementos de él.

No tiene sentido inicializar wordsa un vacío ArrayList, si luego le asigna un diferente List.

Si desea usar la ArrayListinicialización de la wordsvariable, use addAllpara la segunda instrucción:

List<String> words = new ArrayList<String>();
words.addAll(Arrays.asList(line.split(" ")));
Respuesta: 2

Tengo una serie de movimientos para hacer un cubo de rubik, es decir: String [] clockwiseMoves = new String [6]; por lo que los movimientos se denotan como F (frente), R (derecha), U (arriba), L (izquierda), B (atrás), D (abajo) (por ejemplo, cuando ...

Quiero diferenciar las excepciones para el cierre de la conexión del servidor en un socket del cliente, como si el socket del servidor se cierra debido al tiempo de inactividad, ese motivo debe generarse en el lado del cliente como tiempo de inactividad ...

Estoy tratando de crear un archivo grande, digamos 5/10 GB. Pero necesito mostrar la velocidad de escritura en cada segundo. algunos como este 783441920 bytes (783 MB, 747 MiB) copiados, 1 s, 783 MB / s 1088824320 bytes (1.1 GB, 1.0 GiB) ...

Quiero recibir un mensaje de (amq) y escribir en (algún archivo). Pude recibir un mensaje de AMQ pero no pude crear el archivo. Por favor, dime dónde hay un problema aquí es mi ruta. from ("test-jms: queue: Test-AMQ") ....