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

Java : Lista referencji do obiektów typu Integear a podmiana wartosci w subliscie

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
313 wizyt
pytanie zadane 5 grudnia 2019 w Java przez Tomek Orchowski Nowicjusz (140 p.)

Dzień dobry. Jestem początkującym w Javie. Pisząc margesorta irytowałem się że nie działa aż natchnęło mnie żeby sprawdzić czy wartości tak właściwie sie podmieniają.. i tutaj moje zdziwienie... nie.

kod z "zabawy"
 

package zadanie5.sortowanie_1v;

import java.util.ArrayList;
import java.util.Arrays;

public class sortowaniev3
{



    public static void main(String[] args)
    {
        ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,10,11,12}));
        System.out.println(arrayList);
        ArrayList<Integer> arrayListSUBLIST = new ArrayList<>(arrayList.subList(0,arrayList.size()/2));

        for(Integer i:arrayListSUBLIST)
        {
            i = 5;
            System.out.println(i);
        }


        System.out.println(arrayListSUBLIST);
        System.out.println(arrayList);
    }
}

no i wynik programu : 

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
5
5
5
5
5
5
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Czy jakaś dobra duszyczka mogła by mi wyjaśnić co tu sie właściwie stało. Bo już sie pogubiłem w tych referencjach..
Dziękuję za poświęcenie czasu na tego posta.

1 odpowiedź

0 głosów
odpowiedź 5 grudnia 2019 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

Nie wiem jaki ten program ma sens ale...

Na paczątku tworzysz sobie listę dla typu Intiger składającą się z zadeklarowanych elementów. W kolejnym kroku ją wyświetlasz. Następnie tworzysz nową listę, która jest dwa razy krótsza od poprzedniej a przy okazji przyjmuje identyczne wartości jak lista pierwsza do momentu napotkania granicznego indeksu. Pożniej tworzysz sobie pętle która przeleci tyle razy ile jest elementów w tablicy arrayListSUBLIST ( jest 6 elementów) natomiast każda iteracja pętli wyświetla zadeklarowaną wcześniej zmienną - 5. Domyślam się, że chciałeś tutaj przypisać do tej tablicy dla każdgo indeksu wartość 5. Żeby przypisać nową zmienną na aktualnym indeksie listy potrzebujesz użyć ArrayList.set()W ostatnich dwóch liniach kodu po prostu wyświetlasz 2 tablice.

komentarz 5 grudnia 2019 przez Tomek Orchowski Nowicjusz (140 p.)
Chciałem wymienić połowę listy na inne wartosci, Dziwiło mnie że mimo podmiany wartości ostatecznie nie zostały zmienione. Fragment wyrwany z kontekstu ponieważ wyabstrahowałem go z większego "programu". Dziękuję za pomoc :)
komentarz 5 grudnia 2019 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
No własnie nie podmieniałeś wartości :)

Podobne pytania

0 głosów
2 odpowiedzi 2,058 wizyt
pytanie zadane 27 października 2016 w Java przez Lukasz95 Bywalec (2,160 p.)
+1 głos
1 odpowiedź 274 wizyt
pytanie zadane 31 sierpnia 2020 w JavaScript przez nowyklemens Początkujący (430 p.)
0 głosów
3 odpowiedzi 1,663 wizyt
pytanie zadane 18 marca 2020 w Systemy operacyjne, programy przez lubie internet Użytkownik (780 p.)

93,437 zapytań

142,431 odpowiedzi

322,670 komentarzy

62,801 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

...