Como saber o a maior Posição de um ArrayList?

Pessoal alguem saberia me dizer como eu faço pra retornar a maior posição de um ArrayList???

Por favor…

Muito Obrigado!

size()-1

cara minha List eh cheia de posições diferentes

Ex:

22
100
48
2
123
48

e assim por diante! tem umas 40 posições com valores bem diferentes!

pelo que eu saiba esse size é somente para saber o numero de posições cara!

preciso mesmo e saber qual a posição MAIOR!! =/

Sim ele te mostra o tamanho que começa em zero e vc usa assim

//ordena o ArrayList
Collections.sort(seuArrayList);    

seuArrayList.get(seuArrayList.size() - 1); // <- retorna a última posição do Arraylist

então na verdade vc precisa saber o maior valor em sua lista?

ISSO CARA!

NA MOSCA! HEHEHE

POR FAVOR UMA AJUDA!!!

responde tudo…

[code]import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Teste {

/**
 * @param args
 */
public static void main(String[] args) {
	List<Integer> list = new ArrayList<Integer>();

	list.add(Integer.valueOf(22));
	list.add(Integer.valueOf(100));
	list.add(Integer.valueOf(48));
	list.add(Integer.valueOf(2));
	list.add(Integer.valueOf(123));
	list.add(Integer.valueOf(49));

	System.out.println("Ultimo indice é " + (list.size() - 1));

	Collections.sort(list);

	System.out.println("Maior valor é " + list.get(list.size() - 1));
}

}
[/code]

SeuArrayList().get(SeuArrayList().size());

Da certo, pode fazer

Desculpe é
SeuArrayList().get(SeuArrayList().size()-1);

//ordena o ArrayList Collections.sort(seuArrayList); seuArrayList.get(seuArrayList.size() - 1); // <- retorna a última posição do Arraylist
Collections.sort(…); vai alterar a ordem dos valores do array, cuidado!

o que tu podes fazer é:

int i_maior = 0; for(int i = 1; i < lista.size(); i++) { if (lista.get(i) > lista.get(i_maior)) { i_maior = i; } } //aqui a variável [b]i_maior[/b] irá ter o índice do maior valor na lista
Dica: estude lógica de programação!

1 curtida

[quote=dionat4n] //ordena o ArrayList Collections.sort(seuArrayList); seuArrayList.get(seuArrayList.size() - 1); // <- retorna a última posição do Arraylist
Collections.sort(…); vai alterar a ordem dos valores do array, cuidado!

o que tu podes fazer é:

int i_maior = 0; for(int i = 1; i < lista.size(); i++) { if (lista.get(i) > lista.get(i_maior)) { i_maior = i; } } //aqui a variável [b]i_maior[/b] irá ter o índice do maior valor na lista

Dica: estude lógica de programação!
[/quote]

oq é mais rápido? duplicar a lista ordernar e pegar o maior ou rodar a lista num loop?
sempre fui muito mal nisso na facu mas creio que como o sort ja é algo muito bem feito e se imaginarmos a pior das ipoteses que a lista tem uns 1000 itens e que tem que percorrer todos os valores creio que “copia/sort” é uma ótima solução mas é claro que o loop para listas menores talvez seja a melhor solução.

mas é claro que se vc precisa do indice do maior valor o loop é a unica solução creio.

Acho que com Collections resolve:

 Object obj = Collections.max(arrayList);

Vcs tão falando de vários problemas diferentes, mesmo porque o campeão que postou o problema não definiu muito bem qual era.

Ou ele quer a posição do último cara da lista (o size()-1), ou ele quer o valor desse cara minhaLista.get(minhaLista.size()-1) ou ele quer o MAXIMO dos valores presentes na lista (que eu achava que era mas todo mundo respondeu diferente disso…).

O collections tem um método max eu acho (concordando com o phpinheiro).

Senão um loopzinho igual ao do dionat4n serve.

Ola algum de vcs pode me ajudar nesse topico

http://www.guj.com.br/posts/list/112894.java ???

Obrigado

[quote=nextuser][quote=dionat4n] //ordena o ArrayList Collections.sort(seuArrayList); seuArrayList.get(seuArrayList.size() - 1); // <- retorna a última posição do Arraylist
Collections.sort(…); vai alterar a ordem dos valores do array, cuidado!

o que tu podes fazer é:

int i_maior = 0; for(int i = 1; i < lista.size(); i++) { if (lista.get(i) > lista.get(i_maior)) { i_maior = i; } } //aqui a variável [b]i_maior[/b] irá ter o índice do maior valor na lista

Dica: estude lógica de programação!
[/quote]

oq é mais rápido? duplicar a lista ordernar e pegar o maior ou rodar a lista num loop?
sempre fui muito mal nisso na facu mas creio que como o sort ja é algo muito bem feito e se imaginarmos a pior das ipoteses que a lista tem uns 1000 itens e que tem que percorrer todos os valores creio que “copia/sort” é uma ótima solução mas é claro que o loop para listas menores talvez seja a melhor solução.

mas é claro que se vc precisa do indice do maior valor o loop é a unica solução creio.[/quote]

Ô povo, precisa estudar mais complexidade de algoritmos! Depois põem a culpa em Java, dizendo que Java é lento…

  • Pesquisar o maior elemento é O(n).
  • Ordenar uma lista é O(n*log(n)). (complexidade do mergesort modificado que o Collections usa)

O que é mais rápido: n ou n*log(n)?

Óbvio que só pesquisar o maior elemento é muito menor que ordenar todos os elementos.

Isso é muito simples. Qualquer dúvida consulte o livro do Cormen - Algoritmos.

é isso ai por isso que devemos deixar só quem sabe responder o resto do povo deve ficar só olhando.

da proxima vez vou esperar a resposta do dionat4n

Dica: depois de estudar lógica de programação, estude complexidade de algoritmos!

você é o cara

Valeu rapaziada!!!

me ajudaram mto

OBRIGADO A TODOS!

DEU CERTO

Até mais

Pessoal…

eu respondi achando que o Roberto queria saber o valor do maior número inteiro do arraylist.

10 20 30 80 12 34 -> o maior valor é o 80!!!

Bom, foi isso que eu entendi.

Roberto, era isso?