Forum » Programiranje » Java - sortiranje 2D tabele
Java - sortiranje 2D tabele
SkIDiver ::
Zanima me kako bi sortiral podatke v 2D tabeli. Namreč moral bi sortirati podatke po stolpcu in poleg bi se morale vrstice prestavljati kot se sortirajo atributi po stolpcih. Sortirat bi moral stringe in integerje.
Sergio ::
Bolj natančno opiši svoj problem. Če imaš različne tipe, potem nimaš array[][] primitivnih tipov.
Bolje razloži, pa ti bomo pomagali.
Bolje razloži, pa ti bomo pomagali.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
SkIDiver ::
No da opišem zadevo.
Imamo 3 televizorje. Za vsak televizor je znana; Znamka, Model, Zvok(mono, stereo), Cena in Teža.
Vse skupaj damo v tabelo:
Znamka------Model-------Zvok--------Cena-------Teža
---------------------------------------------------------------------
Sony----------TVSH-------Mono-------64000-------20.5
Grunding----GDCA------Stereo------55314-------35.7
Samsung-----AHSA------Stereo-------52210-------34.8
Takole. To tabelo bi sortiral po teži in sicer padajoče. Se pravi bi imel teže;
35.7
34.8
20.5
Zraven pa bi morali biti vsi podatki iz zgornje nesortirane tabele razvrščeni tako kot pašejo. Primer sortirane tabele po teži-padajoče:
Znamka Model Zvok Cena Teža
---------------------------------------------------------------------
Grunding----GDCA------Stereo------55314-------35.7
Samsung-----AHSA------Stereo-------52210-------34.8
Sony----------TVSH-------Mono-------64000-------20.5
Takole. To mi ni jasno kako bi zrealiziral v javi. Da poleg tega da sortira po stolpcu teža poleg zamenja tud vrednosti v vseh ostalih stolpcih, da ima vsak aparat svoje pravilne vrednosti. Da se le te ne pomešajo.
Imamo 3 televizorje. Za vsak televizor je znana; Znamka, Model, Zvok(mono, stereo), Cena in Teža.
Vse skupaj damo v tabelo:
Znamka------Model-------Zvok--------Cena-------Teža
---------------------------------------------------------------------
Sony----------TVSH-------Mono-------64000-------20.5
Grunding----GDCA------Stereo------55314-------35.7
Samsung-----AHSA------Stereo-------52210-------34.8
Takole. To tabelo bi sortiral po teži in sicer padajoče. Se pravi bi imel teže;
35.7
34.8
20.5
Zraven pa bi morali biti vsi podatki iz zgornje nesortirane tabele razvrščeni tako kot pašejo. Primer sortirane tabele po teži-padajoče:
Znamka Model Zvok Cena Teža
---------------------------------------------------------------------
Grunding----GDCA------Stereo------55314-------35.7
Samsung-----AHSA------Stereo-------52210-------34.8
Sony----------TVSH-------Mono-------64000-------20.5
Takole. To mi ni jasno kako bi zrealiziral v javi. Da poleg tega da sortira po stolpcu teža poleg zamenja tud vrednosti v vseh ostalih stolpcih, da ima vsak aparat svoje pravilne vrednosti. Da se le te ne pomešajo.
Zgodovina sprememb…
- spremenil: SkIDiver ()
Sergio ::
Brez problema.
Tole pišem na pamet, tako da koda ne bo ravno biser.
naredi razred Televizor
Sedaj si naredil razred Televizor, ki implementira razred Comparable in overrida CompareTo. Bos videl zakaj.
V kodi potem reces
Ker imas v razredu Televizor overridano metodo CompareTo, in primerjas tezo, se bo array sortiral po narascajoci tezi.
Za padajoco tezo bos valjda znal narest stvar ;-)
Ker sortiras 1-D array objektov, je to to. Ostane ti samo se izpis, kar lahko naredis tako, da overridas metodo toString() in v zanki klices toString() za vsak teve, ce hoces izpis.
Summa summarum:
Klik
KLIK!!!!
Tole pišem na pamet, tako da koda ne bo ravno biser.
naredi razred Televizor
public class Televizor implements Comparable { private String znamka; private String model; private boolean zvok; private int cena; private double teza; Televizor(String znamka, String model, boolean zvok, int cena, double teza) { this.znamka = znamka; this.model = model; this.zvok = zvok; this.cena = cena; this.teza = teza; } public int compareTo(Object o) { Televizor t = (Televizor)o; return (int)(t.teza = this.teza); } }
Sedaj si naredil razred Televizor, ki implementira razred Comparable in overrida CompareTo. Bos videl zakaj.
V kodi potem reces
... Televizor[] teveji = new Televizor[3]; teveji[0] = new Televizor("Grundig", "GDCA", true, 55314, 35.7); teveji[1] = new Televizor("Sony", "TVSH", false, 64000, 20.5); teveji[2] = new Televizor("Samsung", "AHSA", true, 52210, 34.8); Arrays.sort(teveji); ...
Ker imas v razredu Televizor overridano metodo CompareTo, in primerjas tezo, se bo array sortiral po narascajoci tezi.
Za padajoco tezo bos valjda znal narest stvar ;-)
Ker sortiras 1-D array objektov, je to to. Ostane ti samo se izpis, kar lahko naredis tako, da overridas metodo toString() in v zanki klices toString() za vsak teve, ce hoces izpis.
Summa summarum:
Klik
KLIK!!!!
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
SkIDiver ::
Hvala. Na pol kapiš zdele kaj mi je nardit ja. Matr sem v oblakih da tud razmišlat ne morm normalno
Sergio je to iz faxa?
Sergio je to iz faxa?
Zgodovina sprememb…
- spremenil: SkIDiver ()
Sergio ::
To je iz izkušenj. :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
SkIDiver ::
Fajn
Jz nucam za fax pa mi je tole neki probleme delalo. No ja. Tvoja rešitev je še bolj na roko pisana pa še komplicirana ni. Sam da se seb spravm mal
Jz nucam za fax pa mi je tole neki probleme delalo. No ja. Tvoja rešitev je še bolj na roko pisana pa še komplicirana ni. Sam da se seb spravm mal
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Naloga - programiranje v C#Oddelek: Šola | 997 (772) | Skaty |
» | [Java] Sortiranje razredovOddelek: Programiranje | 1451 (1198) | Spura |
» | c# primerjava vrednosti dveh tipov object (brez da vem kateri tip sta)Oddelek: Programiranje | 1103 (890) | Looooooka |
» | [Java] Sortiranje objektovOddelek: Programiranje | 2847 (2847) | tjaz24 |
» | [Java] Tezave s stringomOddelek: Programiranje | 1639 (1578) | Sergio |