» »

[java] iskanje iz vektorja

[java] iskanje iz vektorja

l0g1t3ch ::

Imam vektor objektov in vsak objekt hrani en datum in pa 5 int spremenljivk.

Date rok;
int st1, st2, st3, st4, st5;

Sedaj pa problem.
Nekak bi mogu narest, da grem čez vse objekte v vektorju in za vsak različen datum, ki ga ob prehodu najdem bi potem moral preveriti da na tisti datum vsota vseh st1 v vseh objektih v vektorju ni večja od 10. Isto za st2, st3... drugače mi recmo vrže false

primer:

mamo recmo 3 objekte z takilimi vrednostmi

Date 10.8.2006
int 4, 7, 3, 3,1,

Date 22.8.2006
int 5, 7, 6, 3,11,

Date 10.8.2006
int 1, 4, 1, 3,1,

in ko gre program čez te 3 objekte ugotovi da na dan 10.8.2006 je vsota
st1 = 5 je ok
st2 = 11 NI ok
st3 = 4 je ok
st4 = 6 je ok
st5 = 2 je ok

na dan 22.8.2006 je pač vsota sam 5, 7, 6, 3,11 in spet zadnji ni ok ker je več kot 10

makei ::

Lahko ustvariš en začasen vektor in v njega shranjuješ elemente brez podvajanja. Torej se sprehodiš z iteratorjem skozi prvi vektor in za vsak element v tem vektorju preveriš, če je že v začasnem vektorju. Če je že v njem cifre samo prišteješ, če pa ga ni v njem pa ga dodaš. Za hitrejše delovanje lahko kar sproti ko prištevaš preveriš, če je katera izmed cifer večja od 10.

Drugače pa ta metoda za veliko količino podatkov ni ravno vredu, ker je časovno potratna.

infiniteLoop ::

Prvo vprasanje: Cemu Vector? Zakaj ne uporabis katerega izmed Listov (ArrayList)?

Drugace pa jaz bi na tvojem mestu mogoce uporabil Map (HashMap) v katerem bi kot kljuc uporabil datum in kot vrednost objekt, ki hrani int-e st1..st5. Potem za vsak objekt iz Lista vzames datum in reces: map.get(datum) in ce ne vrne null pristejes vrednosti iz svojega objekta, ter ce je sestevek vecji od 10 vrnes false, ce vrne null naredis nov objekt z int-i in ga shranis v Map - map.put(datum, objekt).

Pa moram ti tudi reci da si problem malo zmedeno specificiral..... zato tudi malo zmeden odgovor.
None of us is as dumb as all of us.

l0g1t3ch ::

Ok Hvala za odgovore bom pogledu se mal razne Liste.
Vektor sm uporabu, ker je enostavn pa prvo mi je pršu na misel :D

jernejl ::

Eno ustrezno idejo so že predstavili, torej da uporabiš sekljalno tabelo (v javi: Hashtable ali HashMap).
Druga rešitev pa ne zahteva uporabe sekljalne tabele, temveč lahko uporabiš kar vektor.

Vektor najprej urediš (npr. s hitrim urejanjem) po datumih, uporabiš lahko npr. kar eno izmed metod
Collections.sort(...)

elementi v vektorju morajo seveda implementirati Comparable. Če tega še nimaš, moraš torej dopisati še CompareTo(...) metodo za tvoj razred.


Nato greš po vrsti skozi ta vektor (dovolj je en prehod), kjer seštevaš vrednosti za vsak posamezni datum (pri vsakem elementu preverjaš, ali je datum enak prejšnjemu, ali pa se je datum spremenil).


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kako bi naredil to nalogo?

Oddelek: Programiranje
91545 (1134) amdsup5
»

c++ DODAJANJE elementov iz datoteke v vektor

Oddelek: Programiranje
7937 (812) Tutankhamun
»

[Java] Podatkovni tip

Oddelek: Programiranje
233791 (3443) piki12
»

[Java] podatkovna baza

Oddelek: Programiranje
252044 (1373) PaX_MaN
»

[c++] Pomoč pri izdelavi std::vector "wrapperja"

Oddelek: Programiranje
81580 (1481) zhigatsey

Več podobnih tem