Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kreiranje i sortiranje strukture podataka

[es] :: Java :: kreiranje i sortiranje strukture podataka

[ Pregleda: 564 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mvasicdo
mvasicdo
Doboj

Član broj: 104294
Poruke: 210
*.teol.net.



Profil

icon kreiranje i sortiranje strukture podataka11.01.2008. u 12:04

Pozdrav svima,

Jednostavno pritanje:

Koji je najjednostavniji nacin da kreiram neku strukturu artikala: sifra, naziv, cijena. Bez koristenja baze.....
Poslije kreiranja potrebno je da ih sortiram po cijeni...

Kako to odraditi koristeci:
Hashtable, Vector, Array, Collections itd. ili mozda neki drugi metod.

Postoji li u javi objekat "struct" kao recimo kod c++-a
11.01.2008. u 12:04 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8808
212.200.70.*

Sajt: www.diskusije.net


Profil

icon Re: kreiranje i sortiranje strukture podataka11.01.2008. u 12:32
Napravis klasu koja ima sve te stvari sto si nabrojao, bilo kao public fields bilo preko get/set metoda. Zatim override-ujes CompareTo metod tako da vrsi poredjenje po ceni.
Na kraju to sve stavis u ArrayList i pozoves sort i ono se samo sortira :)
11.01.2008. u 12:32 

Dejan Lozanovic
Senior Software Developer - Team Leader , www.limores..
Beograd

Član broj: 691
Poruke: 1998
*.dynamic.sbb.co.yu.

Jabber: null@elitesecurity.org
Sajt: www.limores.net


Profil

icon Re: kreiranje i sortiranje strukture podataka11.01.2008. u 12:44
Da mozes to da uradis.

Struct u javi mozes da napravis na stari nacin tako sto napravis klasu, koja ima sve javne metode, ali to je prljavo i nije dobar nacin, za tu svrhu najbolje je da napravis Java Bean tj privatne clanove koji imaju get i set metode za svaki clan.

E sada sto se tice cuvanja podataka, najjednostavnije je da serijalizujes podatke. tj da celu kolekciju serijalizujes. A sada kada je sortiranje po ceni http://java.sun.com/javase/6/d...ava/util/Collections.html#sort pa implementiras komparator nad tvojim java beanom koji poredi dva bean-a po polju cena i to je to.
"E tako se to radi , kratko ali j.e.b.i.t.a.c.n.o"
Degojs car - http://www.elitesecurity.org/t306994
11.01.2008. u 12:44 

mvasicdo
mvasicdo
Doboj

Član broj: 104294
Poruke: 210
*.teol.net.



Profil

icon Re: kreiranje i sortiranje strukture podataka11.01.2008. u 12:47
moze li neki jednostavan primjer...
11.01.2008. u 12:47 

hyle
Perica Milošević
Software Architect - Sportska kladionica Mozzart
Belgrade

Moderator
Član broj: 30030
Poruke: 133
77.247.200.*

ICQ: 58111799
Sajt: www.linkedin.com/in/peric..


Profil

icon Re: kreiranje i sortiranje strukture podataka12.01.2008. u 08:52
U Javi nećeš koristiti "struct" već praviš novu klasu. Na primer ovako:
Code:

public class Product {
   private Integer id;
   private String name;
   private Double price;
}

Klasa je bolja nego "struct" zbog toga što može imati i svoje metode. U ovu klasu sada treba ubaciti konstruktor i napisati get i set metode. Svako bolje razvojno okruženje ima mogućnost automatskog generisanje set i get metoda tako da te to neće smarati.
Code:

   public Product(Integer id, String name, Double price) {
      setId(id);
      setName(name);
      setPrice(price);
   }

   protected Integer getId() {
      return id;
   }
   protected void setId(Integer id) {
      this.id = id;
   }

   protected String getName() {
      return name;
   }
   protected void setName(String name) {
      this.name = name;
   }

   protected Double getPrice() {
      return price;
   }
   protected void setPrice(Double price) {
      this.price = price;
   }

U Javi postoji veliki broj klasa koje predstavljaju kolekcije podataka (liste, skupove, mape). Ukoliko želiš da koristiš svoju klasu u tim gotovim kolekcijama moraćeš da joj dodaš još par metoda.
Na primer, želiš da formiraš skup proizvoda i koristiš klasu HashSet. U HashSet ćeš smeštati objekte tvoje klase i zbog toga klasa mora imati ispravno implementirane metode equals i hashCode. Tvoja klasa, kao i sve ostale, nasleđuje klasu Object i od nje već dobija metode equals i hashCode ali najčešće ćeš želeti da napišeš svoju implementaciju tih metoda. Neke od gotovih kolekcija u Javi zahtevaju implementaciju dodatnih metoda, a neke ne zahtevaju nikakve dodatne metode, sve to možeš potražiti u dokumentaciji.

Ne postoji neki univerzalni način za pisanje metoda equals, hashCode, toString već sve zavisi od načina na koji ćeš ih koristiti. Za ovu već napisanu klasu, metode bi mogle da izgledaju ovako:
Code:

   public int hashCode() {
      return 31 + ((id != null) ? id.hashCode() : 0);
   }

   public boolean equals(Object obj) {
      if (this == obj) return true;
      if (obj == null) return false;
      if (!(obj instanceof Product)) return false;

      final Product that = (Product) obj;
      if (this.id == null) return that.id == null;

      return this.id.equals(that.id);
   }

   public String toString() {
      return "Product [id=" + id +
                    ", name=" + name +
                    ", price=" + price + "]";
   }

Kolekcije u Javi imaju mogućnost sortiranja, a postoje i kolekcije koje su stalno sortirane (npr. TreeSet). Postoje dva načina da omogućiš sortiranje kolekcije:
1. klasa koju smeštaš u kolekciju implementira interfejs Comparable
2. prilikom sortiranja prosleđuješ Comparator

Ako implementiraš intefejst Comparable onda ćeš morati da dodaš metodu compareTo. U tvom slučaju, ako sortiraš po ceni, ta metoda bi mogla da izgleda ovako:
Code:

   public int compareTo(Object o) {
      Product that = (Product)o;
      return this.getPrice().compareTo(that.getPrice());
   }

Sa ovakvom implementacijom tvoje klase mogao bi da sortiraš listu tvojih objekata pozivom:
Code:

      java.util.Collections.sort(lista);

Dobra stvar kod ovakvog pristupa sortiranju je što se implementacije logike sortiranja nalazi u klasi. Nedostatak ovakvog pristupa je što ti pruža mogućnost sortiranja samo po jednom kriterijumu, u ovom slučaju sortira samo po ceni. Ukoliko ti treba mogućnost sortiranja i po nekom drugom kriterijumu onda moraš napraviti odgovarajući Comparator. Na primer, za sortiranje po imenu ili ID-ju dva proizvoda napisao bi sledeće dve klase:
Code:

public class ProductNameComparator implements Comparator {
   public int compare(Object o1, Object o2) {
      Product product1 = (Product)o1;
      Product product2 = (Product)o2;
      return product1.getName().compareTo(product2.getName());
   }
}

class ProductIdComparator implements Comparator {
   public int compare(Object o1, Object o2) {
      Product product1 = (Product)o1;
      Product product2 = (Product)o2;
      return product1.getId().compareTo(product2.getId());
   }
}

Sva ovim Comparator klasama sortiranje po imenu bi radio na sledeći način:
Code:

      java.util.Collections.sort(lista, new ProductNameComparator());

Kolekciju u Javi imaju brojne mogućnosti, na tebi je samo da ih proučiš i koristiš
12.01.2008. u 08:52 

[es] :: Java :: kreiranje i sortiranje strukture podataka

[ Pregleda: 564 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.