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

kreiranje i sortiranje strukture podataka

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

[ Pregleda: 2424 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mvasicdo
Mladen Vasic
Doboj

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



Profil

icon kreiranje i sortiranje strukture podataka11.01.2008. u 12:04 - pre 197 meseci
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
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: kreiranje i sortiranje strukture podataka11.01.2008. u 12:32 - pre 197 meseci
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 :)
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

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

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: kreiranje i sortiranje strukture podataka11.01.2008. u 12:44 - pre 197 meseci
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.
 
Odgovor na temu

mvasicdo
Mladen Vasic
Doboj

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



Profil

icon Re: kreiranje i sortiranje strukture podataka11.01.2008. u 12:47 - pre 197 meseci
moze li neki jednostavan primjer...
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
77.247.200.*

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


+4 Profil

icon Re: kreiranje i sortiranje strukture podataka12.01.2008. u 08:52 - pre 197 meseci
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š
 
Odgovor na temu

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

[ Pregleda: 2424 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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