19 June 2007

ArrayList and Remove

La solucion esta aca: http://eggeral.blogspot.com/2007/12/removing-items-from-list-in-java.html

ejemplo 11.7 del libro de certificacion de java tb esta bueno :P

esto me recuerda a la progamacion tallarin y lo que dijsktra y knuth (en menor grado, ver documento dele) han luchado de sacar el goto...

el libro de certification java que estoy leyendo dice que remove siempre usarlo con el patron implementado en java.util Iterator, asi siempre borra el ultimo next() o previous() y se evita este tipo de problemas.


import java.util.ArrayList;
import java.util.List;


public class Listas {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

//BUEN EJEMPLO de como no remover.

List lis = new ArrayList();

for(int i=0; i<6; i++){ lis.add(i, ""+i); } System.out.println("inicio"); for(int i=0; i<6; i++) { System.out.println(i+"="+lis.get(i)); } System.out.println("sacamos y no sale el 4!"); for(int i=0; i
if(i==3){
lis.remove(i);
}else{
System.out.println(i+"="+lis.get(i));
}
}

System.out.println("final");
for(int i=0; i

System.out.println(i+"="+lis.get(i));
}

}

}


------------------------------------------------------------------------------------------

Segundo ejemplo del libro de certificacion:


11.7
What will be the output from the following program?
import java.util.*;
public class Iterate {
public static void main(String[] args) {
List l = new ArrayList();
l.add("A"); l.add("B"); l.add("C"); l.add("D"); l.add("E");
ListIterator i = l.listIterator();
i.next(); i.next(); i.next(); i.next();
i.remove();
i.previous(); i.previous();
i.remove();
System.out.println(l);
};

};
Select the one correct answer.

  1. It will print [A, B, C, D, E].
  2. It will print [A, C, E].
  3. It will print [B, D, E].
  4. It will print [A, B, D].
  5. It will print [B, C, E].
  6. It will print throw a NoSuchElementException.


11.7
(b)
The remove() method removes the last element returned by either next() or previous(). The four next() calls return A, B, C, and D. D is subsequently removed. The two previous() calls return C and B. B is subsequently removed.

Blog Archive

Disclaimer

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.