Metodo remove() arraylist()

pq nao remove? o 5 da minha lista:

import java.util.ArrayList;
import java.util.Collections;
public class ListaInt{
public static void main(String []args){
	ArrayList<Integer> objtlista = new ArrayList<Integer>();
		int n =3;
		//autoboxing converte automaticamente
		objtlista.add(n);
		objtlista.add(50);
		objtlista.add(2);
		objtlista.add(5);
		
		System.out.println("lista " + objtlista);
		//ordeno a lista
		Collections.sort(objtlista);
		System.out.println("ordenada lista " + objtlista);
		objtlista.remove(5);
		System.out.println("Tamanho de minha lista " + objtlista.size());
	}
}

lança uma exceção IndexOutOfException…

nao entendi!

Lembra que Collections são coleções de Objetos?

Então…
quando você da “list.add(5)”

implicitamente você está fazendo “list.add(new Integer(5))”
você não adiciona tipos primitivos a coleções =]

por isso quando você faz
“list.remove(5)”
ele pensa que você está removendo o Objeto que está na posição 5.

agora se fizer “list.remove(new Integer(5));”
funciona perfeitamente
porque Integer não um Objeto…

[code] List x = new ArrayList();
x.add(24);
x.add(23);
x.add(1);

	x.remove(new Integer(23));[/code]

e por isso o código acima funciona =]

Entendeu?

O metodo remove() tem duas implementaçõs diferentes, uma recebe um int e outra um object. Da forma como vc fez vc esta usando o metodo que recebe um int portanto ele remove pelo indice.
Como vc criou um ArrayList com apenas 4 posiçoes dá o erro IndexOutOfException.
Experimenta criar mais umas duas posiçoes q funciona.
ou faz assim

objtlista.remove(new Integer(5));

um saquei pensei q ele fazia um autoboxing no remove() mais na verdade ele so faz no add() hehe entendi agora! valeu galera!!