ABjp10 Skrevet 20. oktober 2010 Del Skrevet 20. oktober 2010 Hei, Jeg skal legge inn artikler inn i matrise, men jeg ønsker ikke å legge samme artikkel inn to ganger. Noen tips på hvordan jeg skal få det til. Koden min så langt er: public boolean settInn(Artikkel nyArtikkel) { if (antallArtikler >= artikler.length || nyArtikkel == null) return false; artikler[antallArtikler++] = nyArtikkel; return true; } Jeg står litt fast på metoden som jeg skal bruke. Har noen noen tips til meg? Lenke til kommentar
Hieronymus Skrevet 21. oktober 2010 Del Skrevet 21. oktober 2010 Hvis du skal sjekke om et objekt allerede finnes i matrisen, er du nødt til å sjekke hvert element som ligger i matrisen, f.eks. i en for-løkke. Bedre hadde det vært om du hadde brukt et Set, istedetfor en matrise. Da ville du ikke trengt noen sjekk når du la til nye artikler, siden et Set ikke kan inneholde duplikater. En noe dirty approach til ditt problem kunne være: List<Artikkel> list = Arrays.asList(artikler); Set<Artikkel> set = new HashSet<Artikkel>(list); artikler = set.toArray(new Artikkel[set.size()]); Koden over vil konvertere matrisen til en List, deretter til et Set (som fjerner eventuelle duplikater), og tilbake til matrise igjen. --- BalleB Lenke til kommentar
delfin Skrevet 21. oktober 2010 Del Skrevet 21. oktober 2010 evt. if (Arrays.asList(artikler).contains(nyArtikkel) return false; Merk at det er forskjell på referanser og innhold. Denne metoden vil kjøre .equals() på alle elementer, mener jeg å huske. I så fall bør du kanskje override den metoden, men jeg regner med at det er meningen at dere f.eks ikke skal kunne ha to artikler med samme navn, og at det ikke nødvendigvis må være samme objekt... Artikkel a = new Artikkel("Java"); Artikkel b = new Artikkel("Java"); her er det forskjellige objekter, men de heter det samme. Hvis du ikke vil at det skal gå an å legge inn både a og b i samme array, vil den over fungere Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå