oya Skrevet 19. september 2006 Del Skrevet 19. september 2006 (endret) Hei. Har et lite problem. Skal overføre hver oppføring i en 2d-array over til et annet array (1d). En oppføring kan være lagret flere plasser i 2d-arrayen, men jeg vil bare ha hver enkelt oppføring lagret 1 gang i 1d-arrayet. Har prøvd meg frem uten hell, her er koden: boolean funnet = false;boolean lagret = false; int plass = 0; for(int i = 0; i < LengdeFelt1; i++){ for(int j = 0; j<LengdeFelt2; j++){ while(plass < oljeselskap.length && !funnet){ if(oljeselskap[plass] == felt[j]){ funnet = true; } plass++; } plass=0; if(!funnet){ while(!lagret){ if(oljeselskap[plass] == null){ oljeselskap[plass] = felt[j]; lagret = true; } plass++; } } } } Noen som kan hjelpe meg litt på vei? Endret 19. september 2006 av oya Lenke til kommentar
Patton Skrevet 19. september 2006 Del Skrevet 19. september 2006 Bruk HashMap: HashMap myMap = new HashMap(); for (int i = 0; i < oljeselskap.length; ++i) { for (int j = 0; j < oljeselskap[i].length; ++j) { Object key = oljeselskap[i][j]; Object value = oljeselskap[i][j]; // Putter value sortert etter key. Hvis key eksisterer // fra foer, da blir den gamle value skrevet over med den // nye value. // I dette tilfellet blir value brukt som key, og hvis value // finnes fra foer, saa blir det "overskrevet" med seg selv. // Ergo, ingen duplikater. myMap.put(key ,value); } } Collection myCollection = myMap.values(); // Denne bruker du til aa iterere igjennom alle verdier Iterator myIterator = myCollection.iterator(); // Eller du konverterer mapen til en Object array Object[] myObjects = myCollection.toArray(); // Eller et Oljeselskap array Oljeselskap[] myOljeselskapArray = (Oljeselskap[])myCollection.toArray(new Oljeselskap[0]); Lenke til kommentar
oya Skrevet 20. september 2006 Forfatter Del Skrevet 20. september 2006 Tusen takk, skal teste dette senere idag Lenke til kommentar
Patton Skrevet 20. september 2006 Del Skrevet 20. september 2006 ArrayList er ogsaa mulig (kanskje litt mer intuitivt): ArrayList myList = new ArrayList(); for (int i = 0; i < oljeselskap.length; ++i) { for (int j = 0; j < oljeselskap[i].length; ++j) { if (!myList.contains(oljeselskap[i][j]) { myList.add(oljeselskap[i][j]); } } } // Konvertere listen til en Object array Object[] myObjects = myList .toArray(); // Eller et Oljeselskap array Oljeselskap[] myOljeselskapArray = (Oljeselskap[])myList .toArray(new Oljeselskap[0]); NB: Jeg har ikke testet noen av kodene selv, kan inneholde kompileringsfeil. Lenke til kommentar
oya Skrevet 20. september 2006 Forfatter Del Skrevet 20. september 2006 Fikk laget denne: HashMap list = new HashMap(); for(int i = 0; i < lengdeFelt1; i++){ for(int j = 0; j < lengdeFelt2; j++){ if(felt[j] !=null){ String v = felt[j]; list.put(v,v); } // Slutt if } // Slutt for } // Slutt for Collection samling = list.values(); String[] oljeselskap = (String[])samling.toArray (new String[0]); for(int i = 0; i<oljeselskap.length;i++){ skjerm.outln(oljeselskap); } // Slutt for Den funket fint når jeg kjørte den, men fikk opp denne meldingen under kompilering: Note: Oljesystem.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. Hva kan dette være? Lenke til kommentar
oya Skrevet 20. september 2006 Forfatter Del Skrevet 20. september 2006 (endret) når jeg kjører xlint får jeg opp dette Oljesystem.java:214: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.HashMap list.put(v,v); ^ Oljesystem.java:221: warning: [unchecked] unchecked call to <T>toArray(T[]) as a member of the raw type java.util.Collection String[] oljeselskap = (String[])samling.toArray (new String[0]); ^ 2 warnings Endret 20. september 2006 av oya Lenke til kommentar
Patton Skrevet 21. september 2006 Del Skrevet 21. september 2006 Note: Oljesystem.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. Oljesystem.java:214: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.HashMap list.put(v,v); ^ Oljesystem.java:221: warning: [unchecked] unchecked call to <T>toArray(T[]) as a member of the raw type java.util.Collection String[] oljeselskap = (String[])samling.toArray (new String[0]); ^ 2 warnings Dette er java-generic advarsel. Jeg programmerer fortsatt under 1.4.2, saa jeg hoppet over generics. Foelgende endringer fjerner advarselene: HashMap<String,String> list = new HashMap<String,String>(); og Collection<String> samling = list.values(); String[] oljeselskap = samling.<String>toArray (new String[0]); 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å