Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como se o elemento no arrayList existe.

Pessoal to com um probleminha aqui.

    Compra_formadepagamento vf = new Compra_formadepagamento();
            vf.setFormaDePagamento(compraPagamento.getFormaDePagamento());
            if (posicaoEncontrada < 0) {
                vf.setQuantidade(compraPagamento.getQuantidade());
                compraPagamentos.add(vf);
                Mensagem.mensagemInfo("Forma de pagamento adicionada com sucesso");
                this.compraPagamento.setQuantidade(0.0D);
            } else {

Como podem verem nessa linha de código.

 compraPagamentos.add(vf);

Estou adicionado na minha List um Compra_formapagamento na minha lista, que possui.

public class Compra_formadepagamento implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "formaDePagamentos_codigo")
    private FormaDePagamento formaDePagamento = new FormaDePagamento();
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "compra_codigo")
    private Compra compra = new Compra();
    private Double quantidade = 0.0D;

Depois fazendo a ligação no formaDePagamento.

SuppressWarnings("serial")
@Entity
public class FormaDePagamento implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String descricao;

Até chegar aqui..

Tenho uma opção adicionada no forma de pagamento que a descricao dele é "CARTÃO CREDITO" queria saber como fazer uma condição se na minha lista tá vindo com alguma descrição que seja "CARTÃO DE CREDITO".

3 respostas

Oi Allison! Geralmente quando tenho estes casos, eu prefiro usar ao invés de uma String, prefiro usar um Enum. E de repente você tratar a descrição apenas onde está sendo exibida a informação. Assim você garante que só tem um valor possível, e o código fica mais fácil de ler também..

Pensei em algo do tipo:

public enum FormaPagamento {
    CARTAO_DE_CREDITO ("Cartão de Crédito"),
    DINHEIRO("Dinheiro"),
    CHEQUE("Cheque");

    private final String value;

    private FormaPagamento(final String value) {
        this.value = value;
    }

    public String getValue() { return value; }
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codigo;
private FormaPagamento descricao;

if(descricao == FormaPagamento.CARTAO_DE_CREDITO) {
    ...
    System.out.println("escolhido " + descricao.getValue());
//escolhido Cartão de Crédito
}

ai pra comparar seria uma comparação de Enum.. não sei se era isso mesmo que você precisava.. qualquer coisa avisa!

Felipe obrigado pela resposta, sim uso muitas Enum tamém, mais o problema, é que a forma de pagamanto eu adiciono e não vem com um valor statico, oque eu quero fazer, é igual disse acima, adicionei um valor na minha Lista, correto? E quero fazer é se nessa lista, tenho algum elemento chamodo CARTAO DE CREDITO.

O uso do contains não seria pra isso?

solução!

Consegui já e alias de é muito facil, imagina que usava o metodo contains.

    boolean contem = false;
            for(Compra_formadepagamento cf: compraPagamentos) {
                if(cf.getFormaDePagamento().getDescricao().contains("CARTÃO CREDITO")) {
                    contem = true;
                    break;
                } else {
                    contem = false;
                }
            }