Avatar billede charlie1986 Nybegynder
14. januar 2011 - 13:08 Der er 4 kommentarer og
1 løsning

Fjern objekt i en arraylist

Hey igen, sidder lige med et nyt problem jeg ikke rigtigt kan finde en god løsning på.

Jeg har en arrayliste med bestillinger i, hver bestilling har en java.sql.date tilknyttet.

Jeg vil så gerne kunne tage 2 datoer og tjekke om datoer i mit array lægger før eller efter. Det fungere sådan set meget godt, mit problem er så at slette de objekter der indeholder en dato som lægger før dato1 og efter dato2.

Burde det ikke være let, at slette et objekt i en arraylist?

Jeg har forresten prøvet slette ved hjælp af hvert objekts index, men alle de objekter jeg kigger på lægger på index -1, hvilket jeg ikke forstår.

koden til udførelsen af denne opgave, vil bare ikke slette objekterne.

Nogen som kan hjælpe ?

  public ArrayList<Bestilling> formindskarray(java.sql.Date dato1, java.sql.Date dato2)
    {
        ArrayList<Bestilling> list = bs.getAllBestillinger();
   

        for(Bestilling b: list)
        {
            System.out.println(b.getLevdato());
            if(b.getLevdato().before(dato1) == true)
            {
              System.out.println("sletter dato"+b.getLevdato());
              list.remove(b);
            }
            else if(b.getLevdato().after(dato2) == true)
            {
              System.out.println("sletter dato"+b.getLevdato());
              list.remove(b);
            }
        }

        return list;
}
Avatar billede arne_v Ekspert
15. januar 2011 - 03:13 #1
Erstat:

        for(Bestilling b : list) {

med:

        for(int i = 0; i < list.size(); i++) {
            Bestilling b = list.get(i);

så undgår du ConcurrentModificationException.
Avatar billede charlie1986 Nybegynder
16. januar 2011 - 10:48 #2
Tusind tak for hjælpen arne, du er jo simpelthen genial. Lige den løsning havde jeg ikke skænket en tanke, og det var lige nøjagtigt den exception jeg fik.
Avatar billede charlie1986 Nybegynder
16. januar 2011 - 11:10 #3
Men det kan være du kan også har en ide til, hvorfor den ikke finder alle datoerne, det virker som om at den springer datoer der lægger på samme datoer og datoer som lægger tæt op af hinanden over, når den kører array igennem
Avatar billede arne_v Ekspert
16. januar 2011 - 15:52 #4
svar
Avatar billede arne_v Ekspert
16. januar 2011 - 15:54 #5
du bruger .before() og .after() hvilke svarer til < og >.

Og java.sql.Date gemmer kun hele dage.

Vil du bruge <= og >= skal du bruge .compareTo().

Og skal du også betragte timer skal du bruge java.sql.Timestamp.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester