Wybór tablicy do zapisu kolekcji obiektow typu produkt-Javabean

0

Witam, potrzebuję pomocy z doborem tablicy dla danych klasy produkt. W php wykorzystałbym tablice asocjacyjne, ale w javie jest kilka możliwości: arraylist,set,stack,hashtable,hashmap,vector i inne. Zastanawiam się nad wykorzystaniem hashtable lub hashmap. Tablica powinna posiadać możliwość edycji juz zapisanych danych,np. zmiana ilości.
Cały projekt jest wykonany w jsp z wykorzystaniem bibliotek JSTL, języka EL oraz skrypletów.
Dane zawarte w tablicy obiektów produkt po zakończeniu dodawania będą zapisane do bazy danych i następnie przekazane do ziarna wykorzystującego itexpdf w celu utworzenia dokumentu pdf.
Mniej więcej wyglądało by to tak(choć nie jestem pewnien):
Hashtable<Integer, Object> h = new Hashtable<Integer, Object> ();
Poniżej zamieszczam (chyba nie do końca dobrze napisaną) klase produktu(ziarno):

public class produkt {
   private   String jednostka; 
   private   String stawka_vat; // "23%"
   private   String name;
   private   double cena_ne;
   private   double ilosc;
   private    int id_p,lp;

     
    public produkt (){
  
  } 
   public produkt (int id_prod,String jm,String vat, String nazwa, double cena_netto, double ile)
{
 id_prod = id_p;
 jm = jednostka;
 vat = stawka_vat;
 nazwa = name;
 cena_netto = cena_ne;
 ile=ilosc;
}  

   produkt p = new produkt();
   
    public void setLp(int lp) {   
        this. lp = lp;  
    }  
  
    public int getLp()  {   
        return lp;    
    }
    
                public void setId_p(int id_p) {   
        this. id_p = id_p;  
    }  
  
    public int getId_p()  {   
        return id_p;    
    }
            public void setIlosc(double ilosc) {   
        this. ilosc = ilosc;  
    }  
  
    public double getIlosc()  {   
        return ilosc;    
    }
    
             public void setCena_ne(double cena_ne) {   
        this. cena_ne = cena_ne;  
    }  
  
    public double getCena_ne()  {   
        return cena_ne;    
    }
    
          public void setName(String name) {   
        this.name = name;  
    }  
  
    public String getName()  {   
        return name;    
    }
    
       public void setJednostka(String jednostka) {   
        this.jednostka = jednostka;  
    }  
  
    public String getJednostka()  {   
        return jednostka;    
    }
    
           public void setStawka_vat(String stawka_vat) {   
        this.stawka_vat = stawka_vat;  
    }  
  
    public String getStawka_vat()  {   
        return stawka_vat;    
    }   
} 
0

Na początek dwa błędy podstawowe. Pierwszy (A) to nazewnictwo od strony "pisowni". Nazwę klasy piszemy wielką literą, nazwy metod małymi stosując tzw. CamelCase (kolejne słowa poza pierwszym zaczynają się wielką literą). Pierwszy (B) to nazewnictwo od strony "znaczenia". To na co uwagę zwróciła @karolinaa czyli czym jest lp. Reszta nazw też zawiera elementy "domyślne" np. zakładam, że id_p oznacza idProduktu. Ale to są duperele.

Drugim poważnym błędem jest zastosowanie double jako typu do przechowywania wartości pieniężnych. Lepszy jest BigDecimal, a najlepiej użyć biblioteki Joda Money.

Odpowiadając na twoje pytanie. To zależy. Poszczególne obiekty będzie można modyfikować niezależnie od tego w jakiego rodzaju strukturze będziesz je przechowywać. Wynika to z natury języka. Mapy, listy, tablice to wszystko nie wie nic o przechowywanych obiektach. W przeciwieństwie do php separacja pomiędzy kontenerem, a zawartością jest całkowita. Zatem nie ma na chwilę obecną znaczenia jaką strukturę wybierzesz. W JSP nie posiada komponentu odpowiedzialnego za "edytowalną tablicę". Zazwyczaj edycja jakiegoś elementu to po prostu wysłanie odpowiednio wygenerowanego formularza do serwera z ukrytym polem z id obiektu, zapisanie do bazy, a następnie przeładowanie modelu dla widoku i wygenerowanie go od nowa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1