24. september 2009 - 18:11Der er
10 kommentarer og 1 løsning
Flytte et objekt fra en ArrayList til en anden
Hej,
jeg er lige begyndt på Java og har lidt problemer med at forstå hvordan ArrayLister fungerer. Jeg har 2 klasser som skal repræsentere en indkøbskurv og et lager. Jeg har brug for at flytte nogle objekter (varer) fra en ArrayList i indkøbskurven til en ArrayList i lageret. Det skal gøres uden brug af parametre. Jeg har flyttet dem over med parametre på denne måde:
public void laegiKurv(Vare vare, int antal) { int i; if (Lager.lager.contains(vare)) { for (i = 0; i < antal; i++) { if (Lager.lager.contains(vare)) { indhold.add(vare); Lager.lager.remove(vare); } else { return; } } } }
jeg har prøvet mig frem med denne metode, men det virker ikke helt som det skal. Nu har jeg kun testet den, mens 2 objekter er i den, men den fjerner så kun den ene, og hvis jeg så kører den igen, får jeg en "null" fejl.
public void tomKurv() { int i = 0; for (Vare vare : indhold) { Lager.lager.add(indhold.get(i)); indhold.remove(i); i++; } }
Hvis I ellers har nogle gode råd til hvordan jeg kan forbedre min kode, er de velkomne ;-)
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Jeg er lige begyndt som datamatiker, og da vi i starten kun bruger BlueJ (kun klasser/objekter, intet main) og ikke opgaven er en lille en, så er det vist ligegyldigt hvad for en class man bruger til at holde varerne i? Der vil fx aldrig være over 10 varer ;-)
Vi har fået som opgave at lave det her projekt, og det skal være vha. funktioner som vi har haft om (fx ArrayList) og vha google til ting vi ikke kan regne ud selv. Nu kan jeg ikke finde nogen information om hvordan man flytter objekter over fra en klasse til en anden, så måtte det blive eksperten. :-)
Kunne du måske hjælpe mig lidt på vej vha ArrayList, eller hvis du mener HashMap stadigvæk er bedre til sådan nogle små projekter, kunne du så måske hjælpe mig med at komme igang med det?
uha, det blev lidt for indviklet for mig.. jeg skal jo kunne forklare koden for læreren, så det skal helst være noget så simpelt som muligt.
Lige for at understrege, så skal jeg ikke bruge nogle parametre for flytte (eller tømme) metoden. Jeg har en tomKurv() som så skal tage en og en af de objekter der er i ArrayListen, adde til Lager.lager ArrayListen og slette fra indhold ArrayListen. Hvis det kan gøres simplere, ville det være meget godt, ellers må jeg i gang med at læse på, hvad det er du faktisk gør, for jeg forstår stort set ingenting af det :-)
Jeg forstår det nok hvis jeg sætter mig ned og læser det godt og grundigt igennem, men vil helst (hvis muligt) få en løsning som jeg kan forstå ved første øjeblik, hvis du forstår :-)
Jeg har fået løst det vha. en metode du brugte list1.add(list2.remove(n))
public void tomKurv() { int i = 0;
for (i = 0; i < indhold.size(); i++) { Lager.lager.add(indhold.remove(i)); i++; } Lager.lager.add(indhold.remove(0)); }
Det er lidt upraktisk, men det virker.. hvis der er en ca lige så simpel måde som virker, vil helst bruge den ;-)
Af en eller anden grund mangler den en, når man kører listen igennem, så jeg bliver nødt til at bruge remove(0) til sidst. Er der en måde at undgå det på?
Hvis du skal arbejde meget med ArrayList saa proev og brug 10 minutter paa at gennemlaese dokumentationen for alle de metoder som findes.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.