Avatar billede kube Nybegynder
02. juli 2005 - 18:31 Der er 5 kommentarer og
1 løsning

Traversering af en Liste?

Hej Ekperter,
jeg sider med et problem og kan ikke komme på en løsning eller en forklaring hvorfor min kode ikke gør, som forventet?

Jeg har en liste med elementer, der indeholder string arrays. Men når jeg traverserer listen fx for at udskrive, så får jeg kun fat i det sidste element - og det er ikke meningen.

Jeg har lavet nedenstående eksempel, kan nogen give en forklaring på hvorfor kun det sidste element tilgås og udskrives?

Håber på hjælpelige svar, mvh Kasper

******** Filen TestStringArrayList.java *********

import java.util.List;
import java.util.ArrayList;

public class TestStringArrayList {

    public static void main(String[] args) {
        List<String[]> recordList = new ArrayList<String[]>();
        String [] record = new String[2];
       
        for(int i=0; i<10; i++) {
            record[0] = "Index 0 = "+i;
            record[1] = "Index 1 = "+i;

            System.out.println(record[0]+"\t"+record[1]);
            recordList.add(record);           
        }
        System.out.println("Listen har "+recordList.size()+" elementer");
       
        System.out.println("\ns[0]\t\ts[1]"); //Tabel header
        for (String [] s : recordList) {           
            for(int i=0; i<s.length; i++) {
                System.out.print(s[i]+"\t");
                /* Hvorfor printes kun det sidste element?
                * Index 0 = 9    Index 1 = 9
                * (printes 10 gange)
                */
            }
            System.out.println();
        }
    }
}
Avatar billede arne_v Ekspert
02. juli 2005 - 18:36 #1
du indsætter det samme object i listen 10 gange !
Avatar billede arne_v Ekspert
02. juli 2005 - 18:36 #2
List<String[]> recordList = new ArrayList<String[]>();
     
        for(int i=0; i<10; i++) {
            String [] record = new String[2]; // <----- her vil du få et ny object hver gang
            record[0] = "Index 0 = "+i;
            record[1] = "Index 1 = "+i;
Avatar billede kube Nybegynder
02. juli 2005 - 18:40 #3
Ok, men hvorfor kan det samme objekt ikke bare blive opdateret med de nye data?
Avatar billede arne_v Ekspert
02. juli 2005 - 18:42 #4
det kan det da også sagtens men din liste indeholder så 10 referencer tild et samme
objekt der så igen indeholder de sidste indsatte strenge
Avatar billede kube Nybegynder
02. juli 2005 - 18:44 #5
ok, nu er jeg med.. tak - smider du et svar
Avatar billede arne_v Ekspert
02. juli 2005 - 19:04 #6
ok
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

IT-JOB