Olá, pessoal. Não consigo acessar um determinado registro em um ArrayList pela posição. Já vi em várias fontes (incluseve na IDE do NetBeans) a forma de acessar uma determinada posição, mas por algum motivo que eu não consigo ver, não está acessando, e sim a primeira posição. Fiz o código de quatro formas, vou postar aki de duas pra vocês terem uma noção. O método abaixo deve fazer uma varredura em um ArrayList e verificar qual registro possui o maior primeiro elemento da matriz (por exemplo A[0][0] > A[1][0]). Vou tentar comentar o código para facilitar.
Forma 1:
[code]public int[][] menorX (){
int i, posicao, xMenor;
int[][] vetorPontos = new int[20][2];
vetorPontos = listaDePontos.get(0); //passa a matriz da primeira posição do ArrayList para a matriz vetorPontos
xMenor = vetorPontos[0][0]; //armazena na variável xMenor o valor do primeiro elemento da primeira posição da matriz
posicao = 0; //armazena a posição do menor valor (no caso, 0)
for(i=1; i<listaDePontos.size(); i++){ //percorre o ArrayList da posição até a última posição
vetorPontos = listaDePontos.get(i); //armazena em vetorPontos o i-ésimo elemento do ArrayList
if (vetorPontos[i][0] < xMenor){ //compara o menor elemento até o momento com o elemento atual
xMenor = vetorPontos[i][0]; //armazena o novo menor elemento
posicao = i; //armazena a posição do novo menor elemento
}
}
//nesta próxima atribuição é o problema
vetorPontos = listaDePontos.get( posicao); //DEVERIA armazenar o elemento da posição [i]posição[/i], mas armazena SEMPRE o primeiro elemento do ArrayList
//ja tentei assim tambem:
//vetorPontos = listaDePontos.get( (int) posicao); //dá o mesmo erro
return vetorPontos; //retorna a matriz
}[/code]
Forma 2:
[code]public int[][] menorX (){
int i, posicao, xMenor;
int[][] vetorPontos = new int[20][2];
vetorPontos = listaDePontos.get(0); //passa a matriz da primeira posição do ArrayList para a matriz vetorPontos
xMenor = vetorPontos[0][0]; //armazena na variável xMenor o valor do primeiro elemento da primeira posição da matriz
posicao = 0; //armazena a posição do menor valor (no caso, 0)
for(i=1; i<listaDePontos.size(); i++){ //percorre o ArrayList da posição até a última posição
vetorPontos = listaDePontos.get(i); //armazena em vetorPontos o i-ésimo elemento do ArrayList
if (vetorPontos[i][0] < xMenor){ //compara o menor elemento até o momento com o elemento atual
xMenor = vetorPontos[i][0]; //armazena o novo menor elemento
posicao = i; //armazena a posição do novo menor elemento
}
}
//nesta próxima atribuição é o problema
vetorPontos = listaDePontos.remove( posicao); //DEVERIA armazenar o elemento da posição [i]posição[/i], mas armazena SEMPRE o primeiro elemento do ArrayList
//ja tentei assim tambem:
//vetorPontos = listaDePontos.remove( (int) posicao); //dá o mesmo erro
return vetorPontos; //retorna a matriz
}[/code]
Só pra destacar, o programa não tem nenhum erro além deste citado. Já usei System.out para verificar todos valores e tudo confere.
Se alguem ver erro em qualquer uma das formas, me avise, por favor. Vlw!