Como localizar o indice do maior elemento de um arraylist<Double>?

7 respostas
MarcioCasteloBranco

Boa tarde , tenho a seguinte duvida tem uma forma correta de localizar o índice do maior elemento em um arraylist , conseguí fazendo a comparação de cada elemento e isolando o índice do maior, só que ficou muito estruturado como estou aprendendo, gostaria da ajuda dos Senhores!
Obrigado !

7 Respostas

thiago.correa

Tem como você criar um Comparator, ordenar a lista, e pegar o elemento 0 da lista

public static void main(String[] args) {
		List<Double> a = new ArrayList<Double>();
		
		a.add(5.0);
		a.add(4.0);
		a.add(10.0);
		
		Collections.sort(a, new Comparator<Double>(){

			@Override
			public int compare(Double o1, Double o2) {

				return o2.compareTo(o1);
			}});
		
		System.out.println(a.get(0));
	}
yorgan

Você tem que passar o List e ver qual o maior valor.
Algo assim:

Double maiorValor = 0;
List<Double> lista = new ArrayList<Double>();

lista.add(10);
lista.add(5);
lista.add(30);
lista.add(20);

for(Double valor : lista) {  
      if(valor > maiorValor) {
            maiorValor = valor;
      }
}

[]´s

Daniel

E

MarcioCasteloBranco:
Boa tarde , tenho a seguinte duvida tem uma forma correta de localizar o índice do maior elemento em um arraylist , conseguí fazendo a comparação de cada elemento e isolando o índice do maior, só que ficou muito estruturado como estou aprendendo, gostaria da ajuda dos Senhores!
Obrigado !

Uai, você está certo - acho que você não precisa “mexer no seu código”.
Não há uma “maneira orientada a objeto” de fazer o que você quer.

MarcioCasteloBranco

Valeu amigos , vocês me ajudaram muito , Thiago você me ensinou como usar a interface collections sobrescrever o compare , tinha muita duvida nisso, contudo a maneira do yorgan para este caso e melhor porque eu não posso arrumar o arraylist, mas desde já agradeço a vocês pela aula, abaixo vai o que eu fiz tenho que localizar o índice do maior para extrair os dados de uma jtable!

double moda = 0;
        for (Double valor : arrayFi) {
            if(valor > moda){
                moda = valor;
            }
            int idx = arrayFi.indexOf(moda);
        }
MarcioCasteloBranco

Resolvido!!!
Valeu!!!

thiago.correa

Só um porém, você não precisa verificar o índice toda vez

double moda = 0;  
         for (Double valor : arrayFi) {  
             if(valor > moda){  
                 moda = valor;  
}  
             
         }  
int idx = arrayFi.indexOf(moda);
Paulo_Silveira

aproveitando mais a api:

int index = list.indexOf(Collections.max(list));
Criado 14 de setembro de 2009
Ultima resposta 14 de set. de 2009
Respostas 7
Participantes 5