lista tablic - ArrayList - dodawanie elementów

lista tablic - ArrayList - dodawanie elementów
AL
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
        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:

Kopiuj
        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?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Zapewne metoda

Kopiuj
wzory.oblicz(tab);

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

AL
  • Rejestracja: dni
  • Ostatnio: dni
0
bogdans napisał(a):

Zapewne metoda

Kopiuj
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:/

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

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

AL
  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

jak naprawiłeś?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Kliknij w link dwa posty wyżej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.