lista tablic - ArrayList - dodawanie elementów

0

Witam wszystkich.

Potrzebuję stworzyć listę(tablicę) tablic, o ile to w ogóle jest możliwe w Javie. Chcę zapisać w niej kolejne tablice tab i je tam jakiś czas przechować. Tablice są wyliczane w klasie wzory, metoda oblicz.
Próbowałam zrobić to w ten sposób:

        ArrayList<double[][][]> lista = new ArrayList<double[][][]>();
       
        for (int n=0; n<8; n++){
            double[][][] tab = wzory.oblicz(tab);
            lista.add(n, tab);
        }

Chciałam później wyciągnąć po jednym elemencie z każdej tablicy z tej listy:

        ListIterator<double[][][]> iter = lista.listIterator();
        while(iter.hasNext()){
            System.out.println(iter.next()[5][5][0]);
        }

ale ciągle wyświetlało mi wartość dla ostatniej tablicy (n=7).

Sprawdziłam czy dobrze przelatuje przez indeksy listy i wszystko się zgadza - wyświetla kolejne indeksy. Niestety wyciągnięcie wartości dla dowolnej tablicy, przez podanie jej indeksu, kończy się tak jak w/w - wyświetla wynik dla ostatniej tablicy.

Mam wrażenie, że nadpisuje mi wszystkie wcześniej wprowadzone tablice tą ostatnią.

Jak to można naprawić żeby wyświetlało wybrane elementy dla wszystkich kolejnych tablic?

0

Zapewne metoda

wzory.oblicz(tab);

zwraca zawsze tą samą referencję. Zatem w obiekcie lista masz 8 identycznych referencji.

0
bogdans napisał(a):

Zapewne metoda

wzory.oblicz(tab);

zwraca zawsze tą samą referencję. Zatem w obiekcie lista masz 8 identycznych referencji.

Ta metoda zwraca za każdym razem inną wartość. W pętli dodającej elementy do listy wartość tab zmienia się przy każdej iteracji. Sprawdzałam to już wiele razy - wyświetlałam i samą wartość tab i wyciągałam też bezpośrednio wartość z listy przy każdej kolejnej iteracji.
Dopiero przy iterowaniu po liście pojawia się problem... Jakby gdzieś po drodze gubiły się te wcześniej wprowadzone wartości:/

1

Zwraca tą samą referencję, ale wartości w zwracanej tablicy są różne. Pokaż kod tej metody.
Zajrzyj tu http://ideone.com/TTv7rF

0

Mam! Poprawiłam! Bardzo dziękuję za nakierowanie:)

0

jak naprawiłeś?

0

Kliknij w link dwa posty wyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1