SET, LIST ou MAP?

Olá pessoal,

Preciso criar um programa de Estoque e para isso, terei que armazenar dados como: Código do produto, Nome do Produto e Quantidade

Então, tenho algumas dúvidas:

  1. Qual collection usar: SET, List ou MAP ? Qual vocês sugerem ?

  2. Em qualquer collection eu posso alterar um dado ou para alterar terei que apaga-la e cria-la com o novo valor ? Por exemplo: quero aumentar a Quantidade de um Produto X, para isso tem um comando que faça essa alteração direto ?

  3. Esse programa funciona´ra de forma concorrente, ou seja, terei que usar Threads, nesse caso, ao criar o objeto, tenho apenas que usar o Collections.synchronizedMap/List/Set para sincroniza-lo ou terei que fazer mais alguma coisa para não haver problemas ?

Obrigado pela ajuda pessoal !!

Leia isso e tire suas duvidas sobre eles.

1 curtida

Não tendendi se vc quer , ou não, fazer um coleção de codigo + nome + quantidade.
Se é isso vc não usa uma coleção, vc cria uma classe Produto. São os objetos produto que vc coloca no set, list ou map.

no fim deste artigo tem um fluxo para ajudar a decidir

  1. Crie uma classe que represente os elementos em estoque (Esta classe, por exemplo, é que vai ter os campos nomeProduto, codigoProduto e qtdEstoque).
    2)List é uma lista, pura e simples. Set é uma lista em que não há valores repetidos, do ponto de vista de um critério específico (equals, hashCode, compareTo, etc). Map eu já creio que não seja necessário pra você, pois map é pra fazer… mapeamento!

Procure ler mais nos links abaixo:
http://java.sun.com/docs/books/tutorial/collections/interfaces/collection.html
http://java.sun.com/docs/books/tutorial/collections/interfaces/list.html
http://java.sun.com/docs/books/tutorial/collections/interfaces/set.html
http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html

vou dar uma estudada no que vcs passaram … daqui a pouco respondo auhaue

valeww amigonsss

bom, estou fazendo um teste com listas … mas to com um problema

como vcs disseram, criei uma classe que representa os elementos em estoque e joguei as entradas para uma lista.

o problema eh que quando vou procurar um elemento na lista que eh do tipo dessa classe estoque , o codigo indexof nao acha :frowning: ele apenas acha a entrada “opa” …

anexei o print da tela … vcs sabem por que o indexof nao encontra o elemento na lista ?


Leia este tópico (É meio longo, mas é apropriado)
http://www.guj.com.br/posts/list/54036.java#284273
Depois, se quiser, leia este
http://www.guj.com.br/posts/list/45985.java#241201

O que está acontecendo é que você está procurando usando uma String. Repare que dentre os elementos da lista, tem coisas do tipo colecoesLista$teste@82ba41, que é o toString do objeto teste que você criou. O indexof compara com esse valor, e não com o conteúdo dos atributos.

lgm, consegui mostrar o valor, apenas precisava colocar o nome da variável depois do get list.get(i).[color=red]nome[/color]

mantu, seus artigos sao sensacionais … paerabens !!!

mas ainda restou umas duvidsa … vou implementar o SET, uma vez que ele não permite valores duplicados, pergunta:

  1. Gostaria que meu programa, exibisse cada entrada da lista, como eu fiz acima com o List (porém, não estou conseguindo via SET)

Segue código abaixo:

public class EstoqueProfile {

String nome;
String sobrenome;
    
public EstoqueProfile (String a, String b) {
    this.nome = a;
    this.sobrenome = b;
}

public String firstName(){
    return this.nome;
}
   
public String lastName(){
    return this.sobrenome;
}

}

Agora o programa principal:

import java.util.*;

public class colecoesSET {

public static void execute() {
    Set<EstoqueProfile> set = new HashSet<EstoqueProfile>();
    set.add(new EstoqueProfile("Joao", "Antonio"));
    set.add(new EstoqueProfile("Bruna", "Oliveira"));
    set.add(new EstoqueProfile("Marcos", "Araujo"));
    set.add(new EstoqueProfile("Claudio", "Costa"));

    for (int i=0; i < set.size(); i++){
        System.out.println(set);      //   :(  :(   se fosse uma lista, era soh dar, por exemplo, lista.get(0).nome ... aqui no set i don't know :(       
    }
}


public static void main(String[] args) {
    colecoesSET.execute();
}

}

Alguém sabe ?

Brigadãoo