• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dodawanie obiektów do kolekcji ArrayList

Object Storage Arubacloud
0 głosów
1,462 wizyt
pytanie zadane 14 marca 2018 w Java przez mibdbz Gaduła (4,300 p.)

Wczytuję plik ze Stringami, zamieniam je na odpowiednie typy. Wczytuję do obiektu. Chcę dodać obiekt do ArrayList. Do pewnego momentu w pętli mi to wychodzi. Niestety potem wszystkie obiekty w liście zamieniają się na ostatni odczytany obiekt. Oto kod metody: 

public void loading(String fileName) throws IOException {
                        
                        FileReader file = new FileReader(fileName);
                        Scanner scanner = new Scanner(file);
                        while(scanner.hasNextLine()) {
                        measurement.setDate(scanner.nextLine());
                        measurement.setUpperPressure(Integer.parseInt(scanner.nextLine()));
                        measurement.setLowerPressure(Integer.parseInt(scanner.nextLine()));
                        measurement.setPuls(Integer.parseInt(scanner.nextLine()));
                            System.out.println(measurement.toString());
                        listOfMeasurement.add(measurement);
                            
                        }
                        System.out.println(listOfMeasurement.toString());
                        scanner.close();
                }

A to wczytywany plik:

2018-03-14
111
111
111
2018-03-14
222
222
222
2018-03-14
333
333
333
2018-03-14
0
0
0
2018-03-14
123
123
123
2018-03-14
999
999
999
2018-03-14
456
456
456
2018-03-14
777
777
777
2018-03-14
0
0
0
2018-03-14
123
321
123
2018-03-14
12
12
12

wynikiem po pętli jest tylko ostatnie 4 linie. Więc co zrobić żeby do listy wczytywały się wszystkie obiekty z pliku?

2 odpowiedzi

+1 głos
odpowiedź 14 marca 2018 przez Aisekai Nałogowiec (42,190 p.)
wybrane 14 marca 2018 przez mibdbz
 
Najlepsza
W strukturach danych (tablice, kolekcje itp), czyli np w ArrayList dane są przechowywane jako referencje do obiektów. Czyli tak naprawdę, dodając w pętli While() measurment do listy, za każdym razem dodajesz referencje do tego samego obiektu.

Zmieniając pola measurment z każdą iteracja pętli, zmieniasz pola we wszystkich obiektach w tej liście (bo tak jak już wcześniej wspomniałem, wszystkie referencje wskazują na zmieniany obiekt).

Jak to rozwiązać, to już kolega napisał. Zapisywać nowe obiekty do listy (z każdą iteracja tworzyć i zapisywać nowy obiekt).
komentarz 14 marca 2018 przez mibdbz Gaduła (4,300 p.)
Bardzo dziękuję za odpowiedzi. Oczywiście pomogło. Zapamiętam na pewno na długo.
+1 głos
odpowiedź 14 marca 2018 przez Mateusz51 Nałogowiec (28,180 p.)
Obiekt mesurment jest cały czas nadpisywany nowymi danymi. W pętli powinieneś za każdym razem tworzyć nowy obiekt

Podobne pytania

+1 głos
1 odpowiedź 535 wizyt
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 24 marca 2021 w Java przez niezalogowany
0 głosów
2 odpowiedzi 161 wizyt
pytanie zadane 27 lutego 2021 w Java przez napoludniestad.pl Użytkownik (960 p.)

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...