Ajuda para completar um metodo de um ArrayList

Olá, antes de tudo gostaria de avisar que sou iniciante na linguagem JAVA!, tenho um codigo CRUD com arraylist, ja fiz os metodos de adicionar,deletar e buscar, porem estou enfrentando um grande problema com o metodo de atualizar os dados de algum indice desse arraylist (por ex, alterar o atributo id do indice 0, ou nome do indice 3, etc), e gostaria de pedir a ajuda de vocês com esse codigo, gostaria de pelo menos um unico exemplo de um codigo que eu poderia atualizar um dos clientes cadastrados nesse arraylist (e que essa atualização não sobreescrevesse todos os outros clientes cadastrados, apenas esse no qual eu selecionei seja por id,nome,email, etc), obrigado pela paciencia e ajuda!

Segue abaixo os codigos:

Loja.java (Classe main)

import java.util.Scanner;

public class Loja {
public static void main(String[] args) {
Scanner inputInt = new Scanner(System.in);
Scanner inputString = new Scanner(System.in);

    int Menu, clienteId;
    String Nome, Email;
    // Objeto Cliente
    Cliente objCliente;


    do {
        exibirMenu();
        Menu = inputInt.nextInt();
        System.out.println();

        switch (Menu){

            // CADASTRAR CLIENTES
            case 1:
                System.out.println("===> CADASTRANDO CLIENTES");
                System.out.println();
                System.out.print("DIGITE O ID: ");
                clienteId = inputInt.nextInt();
                System.out.print("DIGITE O NOME: ");
                Nome = inputString.nextLine();
                System.out.print("DIGITE O EMAIL: ");
                Email = inputString.nextLine();

                System.out.println();

                // Criar objeto da classe
                objCliente = new Cliente(clienteId, Nome, Email);

                // Guardar no ArrayList
                Pedido.inserirCliente(objCliente);
                System.out.println("CLIENTE CADASTRADO COM SUCESSO!!\n");
                break;

            // LISTAR CLIENTES
            case 2:
                System.out.println("========================== LISTAGEM DE CLIENTES ==========================");
                System.out.println("1 - LISTAGEM COMPLETA\n2 - LISTAR QUANTOS CLIENTES ESÃO CADASTRADOS POR ID\n3 - LISTAR QUANTOS CLIENTES ESÃO CADASTRADOS POR NOME\n4 - LISTAR QUANTOS CLIENTES ESÃO CADASTRADOS POR EMAIL");
                System.out.print("===> ESCOLHA UMA OPÇÃO: ");
                int escolhaListarCliente = inputInt.nextInt();

                if (escolhaListarCliente == 1){
                    System.out.println("===> LISTANDO TODOS CLIENTES");
                    System.out.println();
                    if (! (Pedido.getListaClientes().isEmpty())) {
                        System.out.println(Pedido.listarCliente());
                        System.out.println();
                    } else {
                        System.out.println("NÃO EXISTEM CLIENTES CADASTRADOS!!!");
                        System.out.println();
                    }
                } else if (escolhaListarCliente == 2){
                    System.out.println("===> LISTANDO CLIENTES PELO ID");
                    System.out.print("DIGITE O ID: ");
                    clienteId = inputInt.nextInt();
                    System.out.println();
                    System.out.println("EXISTEM " + Pedido.listarClienteId(clienteId) + " CLIENTES CADASTRADOS COM ESSE ID | " + clienteId);
                    System.out.println();
                } else if (escolhaListarCliente == 3){
                    System.out.println("===> LISTANDO CLIENTES PELO NOMEL");
                    System.out.print("DIGITE O NOME: ");
                    Nome = inputString.nextLine();
                    System.out.println();
                    System.out.println("EXISTEM " + Pedido.listarClienteNome(Nome) + " CLIENTES CADASTRADOS COM ESSE NOME | " + Nome);
                    System.out.println();
                } else {
                    System.out.println("===> LISTANDO CLIENTES PELO EMAIL");
                    System.out.print("DIGITE O EMAIL: ");
                    Email = inputString.nextLine();
                    System.out.println();
                    System.out.println("EXISTEM " + Pedido.listarClienteEmail(Email) + " CLIENTES CADASTRADOS COM ESSE EMAIL | " + Email);
                    System.out.println();
                }
                break;

            // ATUALIZAR CLIENTES
            case 3:
                System.out.println("========================== ATUALIZAÇÃO DE CLIENTES ==========================");
                System.out.println("1 - ATUALIZAR ID\n2 - ATUALIZAR NOME\n3 - ATUALIZAR EMAIL");
                System.out.print("===> ESCOLHA UMA OPÇÃO: ");
                int escolhaAtualizarCliente = inputInt.nextInt();

                if (escolhaAtualizarCliente == 1){
                    System.out.println();
                }  else {
                    System.out.println("OPÇÃO INVALIDA!!!");
                    System.out.println();
                }
                break;

            // REMOVER CLIENTES
            case 4:
                System.out.println("========================== EXCLUSÃO DE CLIENTES ==========================");
                System.out.println("1 - EXCLUSÃO COMPLETA\n2 - EXCLUSÃO POR ID\n3 - EXCLUSÃO POR NOME\n4 - EXLCUSÃO POR EMAIL");
                System.out.print("===> ESCOLHA UMA OPÇÃO: ");
                int escolhaRemoverCliente = inputInt.nextInt();

                if (escolhaRemoverCliente == 1){
                    Pedido.removerClienteTodo();
                } else if (escolhaRemoverCliente == 2){
                    System.out.println("===> EXCLUSÃO DE CLIENTES POR ID");
                    System.out.print("DIGITE O ID DO CLIENTE QUE DESEJA EXCLUIR: ");
                    clienteId = inputInt.nextInt();

                    // If para verificar se o ArrayList com o ID buscado não esta vazio!
                    if (! (Pedido.getListaClientes().isEmpty())){
                        if (Pedido.removerClienteId(clienteId)){
                            System.out.println("CLIENTE REMOVIDO COM SUCESSO!!");
                            System.out.println();
                        } else {
                            System.out.println("NOME NÃO ENCONTRADO!!!");
                            System.out.println();
                        }
                    } else {
                        System.out.println("NÃO EXISTEM CLIENTES CADASTRADOS COM ESSE NOME!!!");
                        System.out.println();
                    }
                } else if (escolhaRemoverCliente == 3){
                    System.out.println("===> EXCLUSÃO DE CLIENTES POR NOME");
                    System.out.print("DIGITE O NOME DO CLIENTE QUE DESEJA EXCLUIR: ");
                    Nome = inputString.nextLine();

                    // If para verificar se o ArrayList com o nome buscado não esta vazio!
                    if (! (Pedido.getListaClientes().isEmpty())){
                        if (Pedido.removerClienteNome(Nome)){
                            System.out.println("CLIENTE REMOVIDO COM SUCESSO!!");
                            System.out.println();
                        } else {
                            System.out.println("NOME NÃO ENCONTRADO!!!");
                            System.out.println();
                        }
                    } else {
                        System.out.println("NÃO EXISTEM CLIENTES CADASTRADOS COM ESSE NOME!!!");
                        System.out.println();
                    }
                } else {
                    System.out.println("===> EXCLUSÃO DE CLIENTES POR EMAIL");
                    System.out.print("DIGITE O EMAIL DO CLIENTE QUE DESEJA EXCLUIR: ");
                    Email = inputString.nextLine();

                    // If para verificar se o ArrayList com o email buscado não esta vazio!
                    if (! (Pedido.getListaClientes().isEmpty())){
                        if (Pedido.removerClienteEmail(Email)){
                            System.out.println("CLIENTE REMOVIDO COM SUCESSO!!");
                            System.out.println();
                        } else {
                            System.out.println("NOME NÃO ENCONTRADO!!!");
                            System.out.println();
                        }
                    } else {
                        System.out.println("NÃO EXISTEM CLIENTES CADASTRADOS COM ESSE EMAIL!!!");
                        System.out.println();
                    }
                }

                break;
            case 5:
                System.out.println("SAINDO DO PROGRAMA...");
                System.out.println();
                break;
            default:
                System.out.println("OPÇÃO DE MENU INVALIDA!!!");
                System.out.println();
        }
    } while (Menu != 5);

}

static void exibirMenu(){
    System.out.println("========================== CLIENTES ==========================");
    System.out.println("1 - CADASTRAR");
    System.out.println("2 - LISTAR");
    System.out.println("3 - ATUALIZAR");
    System.out.println("4 - REMOVER");
    System.out.println("5 - SAIR DO PROGRAMA");
    System.out.print("===> ESCOLHA UMA OPÇÃO: ");
}
Pedido.java (Classe onde criei os metodos e o arraylist)

import java.util.ArrayList;
import java.util.Scanner;

public class Pedido {
    // Definindo atributos da classe Pedido
    private int pedidoId;
    private String dataEmissao;
    private float valorTotal;

    // ArrayList
    private static ArrayList<Cliente> listaClientes = new ArrayList<>();
    private static ArrayList<itemPedido> listaItem = new ArrayList<>();


    // Get and Setters
    // pedidoId
    public int getPedidoId() {
        return pedidoId;
    }

    public void setPedidoId(int pedidoId) {
        this.pedidoId = pedidoId;
    }

    // dataEmissao
    public String getDataEmissao() {
        return dataEmissao;
    }

    public void setDataEmissao(String dataEmissao) {
        this.dataEmissao = dataEmissao;
    }

    // valorTotal
    public float getValorTotal() {
        return valorTotal;
    }

    public void setValorTotal(float valorTotal) {
        this.valorTotal = valorTotal;
    }

    // Lista de Clientes
    public static ArrayList<Cliente> getListaClientes() {
        return listaClientes;
    }

    // Lista de Itens
    public static ArrayList<itemPedido> getListaItem(){
        return listaItem;
    }

    // ===================================================

    // Metodos Cliente
    // Inserir clientes (INSERT)
    static public void inserirCliente(Cliente c) {
        listaClientes.add(c);
    }

    // Listar clientes (READ)
    static public String listarCliente() {
        String saidaCliente = "";
        int i = 1;

        for (Cliente c : listaClientes) {
            saidaCliente += "INDEX: " + (i++);
            saidaCliente += c.Imprimir() + "\n";
        }
        return saidaCliente;
    }

    // Listar clientes por ID (READ BY ID)
    static public int listarClienteId(int clienteId) {
        int quantidadeCliente = 0;

        for (Cliente c : listaClientes) {
            if (c.getClienteId() == clienteId) {
                quantidadeCliente++;
            }
        }
        return quantidadeCliente;
    }


    // Listar clientes por nome (READ BY NAME)
    static public int listarClienteNome(String Nome) {
        int quantidadeCliente = 0;

        for (Cliente c : listaClientes) {
            if (c.getNome().equalsIgnoreCase(Nome)) {
                quantidadeCliente++;
            }
        }
        return quantidadeCliente;
    }

    // Listar clientes por email (READ BY EMAIL)
    static public int listarClienteEmail(String Email) {
        int quantidadeCliente = 0;

        for (Cliente c : listaClientes) {
            if (c.getEmail().equalsIgnoreCase(Email)) {
                quantidadeCliente++;
            }
        }
        return quantidadeCliente;
    }

    // GAMBIARRA STARTS

    // Alterar id do cliente

    // Alterar nome do cliente

    // Alterar email do cliente

    // GAMBIARRA ENDS

    //  Remover todos os clientes
    static public void removerClienteTodo() {
        listaClientes.clear();
    }

    //  Remover clientes pelo ID (REMOVE BY ID)
    static public boolean removerClienteId(int clienteId) {
        for (Cliente c : listaClientes) {
            if (c.getClienteId() == clienteId) {
                listaClientes.remove(c);
                return true;
            }
        }
        return false;
    }

    //  Remover clientes por nome (REMOVE BY NAME)
    static public boolean removerClienteNome(String Nome) {
        for (Cliente c : listaClientes) {
            if (c.getNome().equalsIgnoreCase(Nome)) {
                listaClientes.remove(c);
                return true;
            }
        }
        return false;
    }

    //  Remover clientes por email (REMOVE BY EMAIL)
    static public boolean removerClienteEmail(String Email) {
        for (Cliente c : listaClientes) {
            if (c.getEmail().equalsIgnoreCase(Email)) {
                listaClientes.remove(c);
                return true;
            }
        }
        return false;
    }

    // ---------------------------------------------------

    // Metodos itemPedido
    // Inserir itens (INSERT)
    static public void inserirItem(itemPedido i){
        listaItem.add(i);
    }

    // Listar itens (READ)
    static public String listarItem() {
        String saidaItem = "";
        int j = 1;

        for (itemPedido i : listaItem) {
            saidaItem += "INDEX: " + (j++);
            saidaItem += i.Imprimir() + "\n";
        }
        return saidaItem;
    }

    // Listar clientes por ID (READ BY ID)
    static public int listarItensId(int itemPedidoId) {
        int quantidadeItem = 0;

        for (itemPedido i : listaItem) {
            if (i.getItemPedidoId() == itemPedidoId) {
                quantidadeItem++;
            }
        }
        return quantidadeItem;
    }


    // Listar itens por nome (READ BY ITEM)
    static public int listarItemNome(String Item) {
        int quantidadeItem = 0;

        for (itemPedido i : listaItem) {
            if (i.getItem().equalsIgnoreCase(Item)) {
                quantidadeItem++;
            }
        }
        return quantidadeItem;
    }

    // Listar itens por quantidade (READ BY QUANTITY)
    static public int listarItensQuantidade(int itemQuantidade) {
        int quantidadeItem = 0;

        for (itemPedido i : listaItem) {
            if (i.getQuantidade() == itemQuantidade) {
                quantidadeItem++;
            }
        }
        return quantidadeItem;
    }

    // Listar itens por preço (READ BY PRICE)
    static public float listarItensPreco(float itemPreco) {
        int quantidadeItem = 0;

        for (itemPedido i : listaItem) {
            if (i.getPrecoUnitario() == itemPreco) {
                quantidadeItem++;
            }
        }
        return quantidadeItem;
    }

    //

    //  Remover todos os itens
    static public void removerItemTodo() {
        listaItem.clear();
    }

    //  Remover itens pelo ID (REMOVE BY ID)
    static public boolean removerItemId(int itemPedidoId) {
        for (itemPedido i : listaItem) {
            if (i.getItemPedidoId() == itemPedidoId) {
                listaClientes.remove(i);
                return true;
            }
        }
        return false;
    }

    //  Remover itens por nome (REMOVE BY NAME)
    static public boolean removerItemNome(String Item) {
        for (itemPedido i : listaItem) {
            if (i.getItem().equalsIgnoreCase(Item)) {
                listaClientes.remove(i);
                return true;
            }
        }
        return false;
    }

    //  Remover clientes pelo preço (REMOVE BY PRICE)
    static public boolean removerItemPreco(float itemPreco) {
        for (itemPedido i : listaItem) {
            if (i.getPrecoUnitario() == itemPreco) {
                listaClientes.remove(i);
                return true;
            }
        }
        return false;
    }
}

Cliente.java (Classe onde defini os atributos de cliente e os constructors)

public class Cliente {
    // Definindo atributos da classe Cliente
    private int clienteId;
    private String Nome;
    private String Email;

    // Constructor default
    public Cliente() {

    }

    // Constructor sobrecarregado
    public Cliente(int clienteId, String nome, String email) {
        this.clienteId = clienteId;
        Nome = nome;
        Email = email;
    }

    // Get and Setters
    // clienteId
    public int getClienteId() {
        return clienteId;
    }

    public void setClienteId(int clienteId) {
        this.clienteId = clienteId;
    }

    // Nome
    public String getNome() {
        return Nome;
    }

    public void setNome(String nome) {
        Nome = nome;
    }

    // Email
    public String getEmail() {
        return Email;
    }

    public void setEmail(String email) {
        Email = email;
    }

    // Metodo da classe
    public String Imprimir(){
        return " ID: " + clienteId + " | NOME: " + Nome + " | EMAIL: " + Email;
    }

}
1 curtida

Se consultar a documentação, vais ver que existe o método set(int index, E element).

Fonte: ArrayList.

1 curtida

Se consultar a documentação, vais ver que existe o método set(int index, E element) .

Sim eu vi a documentação, o problema é que não estou conseguindo implementar o metodo set no meu codigo :confused:

Um exemplo de uso (para expor a lógica/sintaxe):

public void editarCliente(Cliente cliente){
	for(int i = 0; i < listaClientes.size(); i++){
		if(listaClientes.get(i).getCodigo() == cliente.getCodigo())
			listaClientes.set(i, cliente);
	}
}
1 curtida

Muito obrigado!! :smile:

Desculpa chamar aqui denovo, porem continuo com o mesmo problema, tentei adaptar o seu exemplo no meu codigo porem ainda assim ele não atualiza o cliente no qual eu selecionei o id:

Segue o codigo abaixo.

Codigo executado no menu quando o cliente pede pra atualizar um cliente:

System.out.println("===> ATUALIZAR CLIENTES\n");

                    System.out.print("\nINSIRA O ID: ");
                    idCliente = inputNumber.nextInt();
                    System.out.print("INSIRA O NOME: ");
                    nomeCliente = inputString.nextLine();
                    System.out.print("INSIRA O EMAIL: ");
                    emailCliente = inputString.nextLine();

                    Cliente objetoCliente = new Cliente(idCliente, nomeCliente, emailCliente);
                    
                    Clientes.atualizarCliente(objetoCliente);

Metodo para atualizar cliente:

static  public void atualizarCliente(Cliente objCliente){
        for (int i = 0; i < listaClientes.size(); i++){
            if (listaClientes.get(i).getClienteId() == objCliente.getClienteId()){
                listaClientes.set(i, objCliente);
            }
        }
    }