Avatar billede ullesan Nybegynder
19. juni 2004 - 17:50 Der er 5 kommentarer og
1 løsning

Hvordan kan man arbejde med et 2 dimensionelt arraylist

Overskriften siger sig selv ;)
Avatar billede arne_v Ekspert
19. juni 2004 - 17:52 #1
ArrayList er en dimensionel.

Du kan lave en ArrayList som indeholder ArrayList.

Hvis du wrapper det i din egen klasse, så kan det laves rimeligt pænt.
Avatar billede ullesan Nybegynder
19. juni 2004 - 17:53 #2
oki... takker
Avatar billede arne_v Ekspert
19. juni 2004 - 17:55 #3
wrappet bliver det f.eks.:

public Object get(int i,int j) {
  return ((ArrayList)data.get(i)).get(j);
}
Avatar billede arne_v Ekspert
19. juni 2004 - 18:29 #4
Noget a la det her:

import java.util.*;

public class ArrayList2D {
    private List data;
    public ArrayList2D() {
        data = new ArrayList();
    }
    public void set(int ix1, int ix2, Object o) {
        for(int i = data.size(); i <= ix1; i++) {
            data.add(new ArrayList());
        }
        List tmp = (List)data.get(ix1);
        for(int i = tmp.size(); i <= ix2; i++) {
            tmp.add(null);
        }
        tmp.set(ix2, o);
    }
    public Object get(int ix1, int ix2) {
        List tmp = (List)data.get(ix1);
        if(tmp == null) {
            return null;
        } else {
            return tmp.get(ix2);
        }
       
    }
    public int size1() {
        return data.size();
    }
    public int size2(int ix1) {
        List tmp = (List)data.get(ix1);
        if(tmp == null) {
            return -1;
        } else {
            return tmp.size();
        }
    }
    public String toString() {
        return data.toString();
    }
    public static void main(String[] args) {
        ArrayList2D test = new ArrayList2D();
        test.set(0, 0, "");
        test.set(1, 1, "A");
        test.set(2, 2, "BB");
        test.set(3, 3, "CCC");
        System.out.println(test);
        for(int i = 0; i < test.size1(); i++) {
            for(int j = 0; j < test.size2(i); j++) {
                System.out.print(" " + test.get(i, j));
            }
            System.out.println();
        }
    }
}
Avatar billede arne_v Ekspert
19. juni 2004 - 18:29 #5
og et svar
Avatar billede ullesan Nybegynder
20. juni 2004 - 19:54 #6
gracias...
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