Boa noite, tenho que verificar o maior elemento em um list fiz deste jeito!
for (Double valor : arrayFi) {//forma de procurar o maior elemento em um arraylist
if (valor > moda) {
moda = valor;
}
}
int idx = arrayFi.indexOf(moda);
Minha duvida entra aqui se em um list eu tenho mais de um elemento com o maior valor, como fazer? Ai criei este jeito, só que estou achando que ficou sem forma JAVA de programar
Como seria a forma correta?
Obrigado
for (Double double1 : Fi) {
if (aux < double1) {
aux = double1;
}
}
for (int i = 0; i < Fi.size(); i++) {
if(Fi.get(i) == aux){
this.moda.add(xi.get(i));
}
}
}
Do jeito que vc flw ficou confuso , porem se vc ja tem o maior valor para que iria querer outro maior valor , ou vc quer uma lista em ordem decrescente de for utilize Comparable .
Boa tarde desculpa a demora para responder, este método descrito acima só retorna o índices do maior elemento em um List,
só que o problema esta ai, este list guarda dados estatísticos(moda) então necessito saber onde aparece o maior elemento e índices se houver repetição.
vlw
A posição que estes teus objetos se encontram na Lista é realmente importante? Se não for, era só ordenar em ordem decrescente e pegar os primeiros valores.
Se precisar mesmo, tente isto:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Procura {
public static void main(String[] args) {
Double[] array = {2d, 2d, 3d, 4d, 5d, 6d, 6d, 5d, 5d, 4d, 6d, 3d, 3d, 3d,};
System.out.println(new Procura().maioresElementos(Arrays.asList(array)));
}
Indices maioresElementos(List<Double> lista) {
Indices resultado = null;
double moda = Double.MIN_VALUE;
for (int i = 0; i < lista.size(); i++) {
double valor = lista.get(i);
if (valor >= moda) {
if (valor > moda) {
moda = valor;
resultado = new Indices(valor);
}
resultado.add(i);
}
}
return resultado;
}
}
class Indices {
double elemento;
List<Integer> indices = new ArrayList<Integer>();
public Indices(double valor) {
this.elemento = valor;
}
public void add(int indice)
{
indices.add(indice);
}
@Override
public String toString() {
return "Moda: " + elemento + " - índices: " + indices;
}
}
[quote=MarcioCasteloBranco]Boa tarde desculpa a demora para responder, este método descrito acima só retorna o índices do maior elemento em um List,
só que o problema esta ai, este list guarda dados estatísticos(moda) então necessito saber onde aparece o maior elemento e índices se houver repetição.
vlw[/quote]
Tem algum problema conceptual ai. A moda é o valor que mais se repete , não o maior valor
Na amostra 1 2 3 4 5 6 7 8 7 6 6 6 5 5 5 1 a moda é 6. mas o maior valor é 8.
O maior valor é o máximo, não a moda.
Vamos la este listFi guarda minha Fi(freqüência) então o maior elemento sera a moda ou as modas (para uma distribuição simples basta verificar o maior elemento no listFi) , depois relaciono os índices do listFi com listclasse para utilizar a formula para achar a moda em classe.
Belezinha Camaradas