Como alterar objeto inserido na arrayList

Galera aqui em baixo está meu código, estou querendo saber como implemento algo dentro do metódo alterar produto caso eu queira mudar o nome do produto o preço ou qualquer coisa. vocês podem me ajudar?

package estoque;

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

public class Sistema implements Cadastros {
    Produto pdt = new Produto();
    
    ArrayList <Produto> produtos = new ArrayList();
    
    Scanner teclado = new Scanner(System.in);
    int op;
    
    @Override
    public void CadastrarProduto(){
        do{
            pdt = new Produto();
            System.out.print("Nome do Produto: ");
            pdt.setNome(new Scanner(System.in).nextLine().toUpperCase().trim());
            System.out.print("Unidade do Produto: ");
            pdt.setUnidade(new Scanner(System.in).nextLine());
            System.out.print("Valor Unitário: R$");
            pdt.setValorUni(teclado.nextDouble());
            produtos.add(pdt);
            
            System.out.println("0 -- SAIR\n1 -- CONTINUAR");
            System.out.print("Opção: ");
            op = teclado.nextInt();
        }while(op!=0);
    }
   
    @Override
    public void AlterarProduto() {
        
        
    }

https://pt.stackoverflow.com/questions/71456/editar-objeto-armazenado-em-um-arraylist vê se te ajuda

Para você alterar o produto primeiramente precisa saber quem você quer alterar, vamos fazer uma analogia aos bancos de dados. Quando selecionamos um registro no banco para alterar, temos que dar um identificador para ele, se esse identificador não for único (um id por exemplo) ele pode nos trazer mais de uma informação e estaremos alterando coisas que não precisamos, primeiramente eu colocaria um atributo Integer (ou primitiva int) dentro da classe Produto que seria o seu id.
Uma maneira simples de resolver esse seu problema é passar no metodo AlterarProduto o id que deseja consultar e os valores que deseja colocar e la dentro faz o seguinte:

public void AlterarProduto(Integer id, String nome) {
    for(Produto p : produtos){
        if(p.getId() == id) {
            p.setNome(nome);
        }
}

Então basicamente a idéia é apenas iterar na lista e procurar o objeto que deseja alterar, se não quiser criar um id funcionará da mesma forma.

Abs.