Estoy tratando de iterar a través de la implementación de Java de una lista vinculada y modificar cada elemento de la lista vinculada en tiempo constante. Conozco el método set () de la lista vinculada, pero esa operación es O (n). Entonces, si usara el método set () en un ciclo, sería O (n ^ 2), que no es lo que quiero. Como estoy iterando a través de la lista enlazada, ya sé la posición del nodo del que quiero modificar su contenido. ¿Hay alguna manera de hacer esto en tiempo constante usando la Lista vinculada de Java?
He hecho esto muchas veces con implementaciones personalizadas, pero no veo la forma de hacerlo en tiempo constante. Intenté iterar a continuación, pero me falta algo.
LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("C"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { iterator.remove(); iterator.set(); // using set() wouldn't be O(1) }Iterator no tiene un método set . Afortunadamente, está trabajando con LinkedList y ListIterator tiene un método set .
ListIterator<String> it = list.listIterator(); while (it.hasNext()) { it.set("new_" + it.next()); }