lista tablic - ArrayList - dodawanie elementów

lista tablic - ArrayList - dodawanie elementów
AL
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
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?

edytowany 1x, ostatnio: Alo
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Zapewne metoda

Kopiuj
wzory.oblicz(tab);

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
AL
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
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
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans
AL
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
0

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

0

jak naprawiłeś?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Kliknij w link dwa posty wyżej.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

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.