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

21 respostas
R

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

Por favor…

Muito Obrigado!

21 Respostas

B

size()-1

R

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!! =/

gilmaslima

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
nextuser

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

R

ISSO CARA!

NA MOSCA! HEHEHE

POR FAVOR UMA AJUDA!!!

nextuser

responde tudo.....

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));
	}

}
Adolpho_Alves

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

Da certo, pode fazer

Adolpho_Alves

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

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!

nextuser

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!

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.

phpinheiro

Acho que com Collections resolve:

Object obj = Collections.max(arrayList);
dmandrak

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.

Adolpho_Alves

Ola algum de vcs pode me ajudar nesse topico

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

Obrigado

dionat4n

nextuser:
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!

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.

Ô 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.

nextuser

é 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

dionat4n

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

nextuser

você é o cara

R

Valeu rapaziada!!!

me ajudaram mto

OBRIGADO A TODOS!

DEU CERTO

Até mais

phpinheiro

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?

R

Sim ele é mto bom mesmo cara!

mas tua resposta é que me ajudou! hehe!

era coisa mto simples que eu n me recordava!!

valeuu

R

encontrei a solução (que era coisa boba) nas respostas do phpinheiro e o nextuser

porem na do nosso outro amigo eu consegui aprender uns lances que Não sabia!!

OBRIGADO A TODOS!

Criado 16 de dezembro de 2008
Ultima resposta 16 de dez. de 2008
Respostas 21
Participantes 8