ArrayList

Galera tenho um arraylist com valores float, exemplo: 55.67, 67.98, 89.10, etc…

Preciso pegar o menor valor desse arraylist, como posso fazer ?

Obrigado

Ordene ele e pegue o a posição de numero zero

Segue um exemplo

package arrayordenacao;

import java.util.Arrays;
import java.util.Scanner;

/**
 *
 * @author Luiz Almeida Júnior
 */
public class ArrayOrdenacao {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // o array suporta n posições 
        float arrayOrdenar[] = new float[5];
        for (int index = 0; index < arrayOrdenar.length; index++) {
            System.out.print("Informe o " + (index + 1) + "º termo.:");
            arrayOrdenar[index] = input.nextFloat();
        }

        Arrays.sort(arrayOrdenar, 0, arrayOrdenar.length);
        System.out.println("\nArray ordenado.....: " + Arrays.toString(arrayOrdenar));
        System.out.println("O menor termo é....: " + arrayOrdenar[0]);

    }
}

[Editado.: mudei o vetor para float, não tinha lido o enunciado direito e deixei o array int, peço perdão pelo descuido. ]

Cara desculpa eu não entendi muito bem, meu método está assim :

public String exibirContaEconomica()
    {
        String saida= "";
        
        if(arrayContaEnergia.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
                ........
            }
        }
        
        return saida;
    }

Como ficaria dentro do FOR ?

Obrigado

Nossa, exercício básico que se dá na primeira aula aula de for.

[code]float menorValorConta = FLOAT.MAX_VALUE;
float ContaEnergia menorConta = null;

for (ContaEnergia obj : arrayContaEnergia) {
if (obj.getValor() < menorValorConta) {
menorValorConta = obj.getValor();
menorConta = obj;
}
} [/code]

Se for em Java 8, e se ContaEnergia for comparable, há um jeito bem mais fácil:

ContaEnergia menor = arrayContaEnergia .stream() .min(ContaEnergia::compare) .get();

Se não for comparable, basta colocar um Comparator dentro do método min:

ContaEnergia menor = arrayContaEnergia .stream() .min((e1, e2) -> (int)((e1.getValor() - e2.getValor()) * 100)) .get();

[quote=SirSmart]Cara desculpa eu não entendi muito bem, meu método está assim :

public String exibirContaEconomica()
    {
        String saida= "";
        
        if(arrayContaEnergia.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
                ........
            }
        }
        
        return saida;
    }

Como ficaria dentro do FOR ?

Obrigado
[/quote]

Suponhamos que você tenha um array com os números 23,22 - 1,1 - 0,2 , ordenados ficaram 0,2 - 1,1 - 23,22 . Concorda comigo ?
e o menor ficara na posição 0 do array, correto ? se imprimir essa posição após ordenado terá o menor valor em tela.
Qualquer outra dúvida basta mandar uma MP, estarei ajudando na medida que eu souber.

Entendi, mas não consigo fazer isso :


arrayContaEnergiaa.sort(arrayContaEnergia);

Pq?

Abraço

[quote=SirSmart]Entendi, mas não consigo fazer isso :


arrayContaEnergiaa.sort(arrayContaEnergia);

Pq?

Abraço[/quote]

/* Segue a implementação 
 Vale ressaltar que estava faltando dois parametros sendo, 0 "Posição inicial" e "arrayContaEnergia.length" posição final, espero ter ajudado */
arrayContaEnergiaa.sort(arrayContaEnergia, 0 , arrayContaEnergia.length);

Cara não tenho a opção length no meu arrayList, só tenho size() e está ocorrendo erro.
Desculpa mas ainda não consegui resolver, se vc puder me ajudar eu agradeço

Abraço

[quote=SirSmart]Cara não tenho a opção length no meu arrayList, só tenho size() e está ocorrendo erro.
Desculpa mas ainda não consegui resolver, se vc puder me ajudar eu agradeço

Abraço[/quote]

ViniGodoy já lhe deu a resposta…
Mesmo assim mostre o seu código para a gente ver …
até…

[quote=SirSmart]Entendi, mas não consigo fazer isso :


arrayContaEnergiaa.sort(arrayContaEnergia);

[/quote]

// deve se inportar o pacote Arrays
import java.util.Arrays; 

Arrays.sort(arrayContaEnergia, 0 ,arrayContaEnergia.length );

juninhohall, ele está usando ArrayList e não Arrays primitivos.

SirSmart, qual é o problema com a resposta que te passei?

Cara desculpa mas como sou muito novo em java não sei muito bem fazer a comparação e acabei não entendendo a maneira que vc fez. Vou postar minha classe e como estou fazendo e se vc puder me ajudar eu agradeço.

Segue:


package maisenergia;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JOptionPane;

public class GerenciaContasEnergia  {
    
    ArrayList<ContaEnergia> arrayContaEnergia;
 
    public GerenciaContasEnergia()
    {
        arrayContaEnergia = new ArrayList();
    }

    public void adicionarContaEnergia(ContaEnergia conta)
    {
        arrayContaEnergia.add(conta);
    }
    
    public ContaEnergia buscarContaEnergia(int contaEnergia)
    {
        ContaEnergia conta = new ContaEnergia();
        
        for (ContaEnergia obj : arrayContaEnergia) 
        {
            if(obj.getNumeroConta() ==  contaEnergia)
            {
                    //return obj;
                conta.setNomeEndereco(obj.getNomeEndereco());
                conta.setNumeroConta(obj.getNumeroConta());
                conta.setQtdeKWConsumidos(obj.getQtdeKWConsumidos());
                conta.setValorKWUnitario(obj.getValorKWUnitario());
            }
        }
        return conta;
    }
    
    public String listarTodas()
    {
        String saida= "";
        if(arrayContaEnergia.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
                saida += obj.Imprimir() + "\n";
            }
        }
        return saida;
    }
    
    public String exibirContaEconomica()
    {
        String saida= "";

        if(arrayContaEnergia.isEmpty())
        {
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
               .....
            }
        }
        return saida;
    }
        

    public float exibirConsumoMedioKw()
    {
        String saida= "";
        float total = 0;
        float totalMedia=0;
        
        ContaEnergia conta = new ContaEnergia();
        
        if(arrayContaEnergia.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
                total+= obj.getQtdeKWConsumidos();
            }
            
            totalMedia = total /  arrayContaEnergia.size();

        }
        return totalMedia;
    }
    
}
    
    

No método “exibirContaEconomica” preciso exibir o menor valor que o usuário cadastrou no arraylist que fui preechendo e como disse até agora não consegui fazer…

Obrigado

[quote=SirSmart]Cara desculpa mas como sou muito novo em java não sei muito bem fazer a comparação e acabei não entendendo a maneira que vc fez. Vou postar minha classe e como estou fazendo e se vc puder me ajudar eu agradeço.

Segue:


package maisenergia;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JOptionPane;

public class GerenciaContasEnergia  {
    
    ArrayList<ContaEnergia> arrayContaEnergia;
 
    public GerenciaContasEnergia()
    {
        arrayContaEnergia = new ArrayList();
    }

    public void adicionarContaEnergia(ContaEnergia conta)
    {
        arrayContaEnergia.add(conta);
    }
    
    public ContaEnergia buscarContaEnergia(int contaEnergia)
    {
        ContaEnergia conta = new ContaEnergia();
        
        for (ContaEnergia obj : arrayContaEnergia) 
        {
            if(obj.getNumeroConta() ==  contaEnergia)
            {
                    //return obj;
                conta.setNomeEndereco(obj.getNomeEndereco());
                conta.setNumeroConta(obj.getNumeroConta());
                conta.setQtdeKWConsumidos(obj.getQtdeKWConsumidos());
                conta.setValorKWUnitario(obj.getValorKWUnitario());
            }
        }
        return conta;
    }
    
    public String listarTodas()
    {
        String saida= "";
        if(arrayContaEnergia.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
                saida += obj.Imprimir() + "\n";
            }
        }
        return saida;
    }
    
    public String exibirContaEconomica()
    {
        String saida= "";

        if(arrayContaEnergia.isEmpty())
        {
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
               .....
            }
        }
        return saida;
    }
        

    public float exibirConsumoMedioKw()
    {
        String saida= "";
        float total = 0;
        float totalMedia=0;
        
        ContaEnergia conta = new ContaEnergia();
        
        if(arrayContaEnergia.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
        }
        else
        {
            for (ContaEnergia obj : arrayContaEnergia) 
            {
                total+= obj.getQtdeKWConsumidos();
            }
            
            totalMedia = total /  arrayContaEnergia.size();

        }
        return totalMedia;
    }
    
}
    
    

No método “exibirContaEconomica” preciso exibir o menor valor que o usuário cadastrou no arraylist que fui preechendo e como disse até agora não consegui fazer…

Obrigado[/quote]

Tem como passar apenas o enunciado do exercicio ?

O enunciado do exercício é esse:

Criar a Classe GerenciaContasEnergia que tenha um atributo ArrayList do tipo ContaEnergia. Os seguintes métodos devem ser implementados:

adicionarContaEnergia(): adicionar uma conta de energia na lista.
buscarContaEnergia(int numero): buscar uma conta de energia pelo número da Conta. Este método deve retornar um objeto ContaEnergia.
listarTodas(): visualizar todos as contas de energia da lista. Este método deve retornar uma String. Fazer validação para lista vazia.
exibirContaEconomica(): exibir nome do cliente e quantidade KW consumidos da conta de energia mais econômica. Fazer validação para lista vazia.
exibirConsumoMedioKw(): exibir o consumo médio de KW de todas as contas armazenadas na lista. Fazer validação para lista vazia.

No caso o método é exibirContaEconomica

Abraço

Espero que ajude… deve ser isso mais ou menos… rs

Classe ContaEnergia

public class ContaEnergia {
    
    private int numero;
    private String nome;
    private String endereco;
    private float qtdeKW;
    private float valorKW;
    
    public ContaEnergia() {
        
    }
    
    public String imprimir(ContaEnergia conta) {
        return new StringBuilder()
                .append("\nNome: ").append(conta.getNome())
                .append("\nNumero da Conta: ").append(conta.getNumero())
                .append("\nEndereço: ").append(conta.getEndereco())
                .append("\nQuantidade de KW: ").append(conta.getQtdeKW())
                .append("\nValor KW: ").append(conta.getValorKW())
                .append("\n\n").toString();
    }    

    // ----------------- Getters e Setters ---------------- //
    
    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public float getQtdeKW() {
        return qtdeKW;
    }

    public void setQtdeKW(float qtdeKW) {
        this.qtdeKW = qtdeKW;
    }

    public float getValorKW() {
        return valorKW;
    }

    public void setValorKW(float valorKW) {
        this.valorKW = valorKW;
    }  
}

Classe GerenciaContasEnergia

public class GerenciaContasEnergia {
    
    private List<ContaEnergia> contaEnergia = null;
    
    public GerenciaContasEnergia() {
        this.contaEnergia = new ArrayList<>();
    }
    
    public void adicionarContaEnergia(ContaEnergia conta) {
        contaEnergia.add(conta);
    }
    
    public ContaEnergia buscarContaEnergia(int numero) {
        ContaEnergia conta = null;
        for(ContaEnergia c : contaEnergia){
            if(c.getNumero() == numero){
                conta = c;                
            }            
        }        
        return conta;
    }
    
    public String listarTodas() {
        String list = "";
        for(ContaEnergia c : contaEnergia){
            list = new StringBuilder(list).append(c.imprimir(c)).toString();
        }
        return contaEnergia.isEmpty() ? "Lista vazia !!" : list;
    }
    
    public String exibirContaEconomica() {
        float menorValorConta = Float.MAX_VALUE;        
        ContaEnergia menorConta = null;
        for(ContaEnergia c : contaEnergia){
            if(c.getValorKW() < menorValorConta){
                menorValorConta = c.getValorKW();
                menorConta = c;
            }
        }                       
        return contaEnergia.isEmpty() ? "Lista Vazia !!" : dadosCliente(menorConta);
    }
    
    public String exibirConsumoMedioKw() {
        float soma = 0.0f;
        for(ContaEnergia c : contaEnergia){
            soma += c.getValorKW();
        }
        return contaEnergia.isEmpty() ? "Lista Vazia !!" :
               String.valueOf(soma / contaEnergia.size());        
    }
    
    private String dadosCliente(ContaEnergia conta) {
        return new StringBuilder().append("Nome: " ).append(conta.getNome())
               .append("\nNúmero da Conta: ").append(conta.getNumero())
               .append("\nQuantidade Consumida: ").append(conta.getQtdeKW()).toString();
    }
}

Classe TesteConta – Exemplo

[code]
public class TesteConta {

public static void main(String[] args) {
    GerenciaContasEnergia gerConta = new GerenciaContasEnergia();
    ContaEnergia nConta1, nConta2;
    nConta1 = new ContaEnergia();
    nConta2 = new ContaEnergia();
    //Cadastra conta 1
    nConta1.setNome("Carla");
    nConta1.setEndereco("Rua Miranda");
    nConta1.setNumero(2);
    nConta1.setQtdeKW(53);
    nConta1.setValorKW(34.95f);
    gerConta.adicionarContaEnergia(nConta1);
    //Cadastra conta 2
    nConta2.setNome("Rafael");
    nConta2.setEndereco("Rua Pereira");
    nConta2.setNumero(5);
    nConta2.setQtdeKW(145);
    nConta2.setValorKW(69.89f);
    gerConta.adicionarContaEnergia(nConta2);        
    //Exibe todas as Listas
    System.out.println("----- Lista de Cadastrados ----");
    System.out.print(gerConta.listarTodas());
    //Exibe a menor Conta
    System.out.println("---- Conta mais Economica -----\n");
    System.out.print(gerConta.exibirContaEconomica());
    //Exibe a média das Contas
    System.out.println("\n\n---- Consumo Médio -----\n");
    System.out.print("Consumo Médio de: " + gerConta.exibirConsumoMedioKw());                
    //Exibe resultado da Busca 
    System.out.println("\n\n---- Buscar Cliente -----");       
    resultBusca(gerConta, 5);
}    

private static void resultBusca(GerenciaContasEnergia cliente, int numero) {
    ContaEnergia cliEnergia = cliente.buscarContaEnergia(numero);        
    if(cliEnergia == null){
        System.out.print("\nCliente não cadastrado !!");                          
    }else{
        System.out.println(cliEnergia.imprimir(cliEnergia));
    }
}

}
[/code] Faça o teste… até

Galera muito obrigado pela ajuda, agora deu certo…

Abraço a todos pela ajuda…