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 !
Tem como você criar um Comparator, ordenar a lista, e pegar o elemento 0 da lista
[code] public static void main(String[] args) {
List a = new ArrayList();
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));
}[/code]
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
[quote=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 ![/quote]
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.
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);
}
Resolvido!!!
Valeu!!!
Só um porém, você não precisa verificar o índice toda vez
[code]
double moda = 0;
for (Double valor : arrayFi) {
if(valor > moda){
moda = valor;
}
}
int idx = arrayFi.indexOf(moda); [/code]
aproveitando mais a api:
int index = list.indexOf(Collections.max(list));