<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Komentarze do: Dlaczego zawsze powinieneś używać ArrayList w Javie?	</title>
	<atom:link href="https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/feed/" rel="self" type="application/rss+xml" />
	<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/</link>
	<description>Blog o programowaniu w Javie</description>
	<lastBuildDate>Fri, 04 Aug 2023 17:06:53 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-3480</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Tue, 14 Sep 2021 08:41:06 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=421#comment-3480</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-3475&quot;&gt;abxcd&lt;/a&gt;.

Tak naprawdę różnica jest niewielka. Ponieważ konstruktor kopiujący (new ArrayList(accountDTOs)) kopiuje tylko instancję listy, więc nadal możesz zmieniać elementy wewnątrz listy (jeśli są to obiekty mutowalne, a często są) i wtedy te obiekty będą zmienione na obu listach. 

Jeśli chcesz mieć &quot;bezpiecznie&quot; to najpierw powinieneś zrobić niemutowalne obiekty accounts, a kolejna rzecz to skopiowanie listy, poprzez konstruktor lub od razu zrobić niemutowalną listę. Niemutowalne kolekcje możesz znaleźć w bibliotece Guawa lub w Javie 9+ jest statyczna metoda List.of() dzięki, której też możesz stworzyć nimutowalną listę. Pisałem też o niemutowalnych obiektach tutaj: &lt;a href=&quot;https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/&quot;&gt;Pytania rekrutacyjne Java – Obiekty niezmienne (immutable)&lt;/a&gt;]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-3475">abxcd</a>.</p>
<p>Tak naprawdę różnica jest niewielka. Ponieważ konstruktor kopiujący (new ArrayList(accountDTOs)) kopiuje tylko instancję listy, więc nadal możesz zmieniać elementy wewnątrz listy (jeśli są to obiekty mutowalne, a często są) i wtedy te obiekty będą zmienione na obu listach. </p>
<p>Jeśli chcesz mieć &#8222;bezpiecznie&#8221; to najpierw powinieneś zrobić niemutowalne obiekty accounts, a kolejna rzecz to skopiowanie listy, poprzez konstruktor lub od razu zrobić niemutowalną listę. Niemutowalne kolekcje możesz znaleźć w bibliotece Guawa lub w Javie 9+ jest statyczna metoda List.of() dzięki, której też możesz stworzyć nimutowalną listę. Pisałem też o niemutowalnych obiektach tutaj: <a href="https://nullpointerexception.pl/pytania-rekrutacyjne-java-obiekty-niezmienne-immutable/">Pytania rekrutacyjne Java – Obiekty niezmienne (immutable)</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: abxcd		</title>
		<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-3475</link>

		<dc:creator><![CDATA[abxcd]]></dc:creator>
		<pubDate>Sun, 12 Sep 2021 11:53:02 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=421#comment-3475</guid>

					<description><![CDATA[Witam.

A co lepiej zwracać w JEE kiedy chodzi o bezpieczeństwo listy?

    public List getAccounts() {
        return new ArrayList(accountDTOs); // ArrayList ma konstruktor kopiujący 
    }

czy 

    public List getAccounts() {
        return accountDTOs;
    }]]></description>
			<content:encoded><![CDATA[<p>Witam.</p>
<p>A co lepiej zwracać w JEE kiedy chodzi o bezpieczeństwo listy?</p>
<p>    public List getAccounts() {<br />
        return new ArrayList(accountDTOs); // ArrayList ma konstruktor kopiujący<br />
    }</p>
<p>czy </p>
<p>    public List getAccounts() {<br />
        return accountDTOs;<br />
    }</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-316</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Mon, 09 Dec 2019 09:11:31 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=421#comment-316</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-309&quot;&gt;Tomek&lt;/a&gt;.

Dzięki za komentarz Tomek. Dodałem jeszcze akapit z wyjaśnieniem. Oczywiście nie rozpatruję tutaj takich przypadków (Tylko użycie listy w przeciętnej aplikacji webowej, gdzie te listy są raczej małe). W przypadku milionów elementów i kopiowania dużych tablic oczywiście może to mieć znaczenie. Ale wtedy w zależności od sytuacji, albo to jakoś optymalizujesz, albo korzystasz z innych implementacji kolekcji, które zostało stworzone do takich celów np. FastUtil, Trove,  HPPC itp. Tak naprawdę, w skrajnych przypadkach nie ma jednoznacznych odpowiedzi ;)]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-309">Tomek</a>.</p>
<p>Dzięki za komentarz Tomek. Dodałem jeszcze akapit z wyjaśnieniem. Oczywiście nie rozpatruję tutaj takich przypadków (Tylko użycie listy w przeciętnej aplikacji webowej, gdzie te listy są raczej małe). W przypadku milionów elementów i kopiowania dużych tablic oczywiście może to mieć znaczenie. Ale wtedy w zależności od sytuacji, albo to jakoś optymalizujesz, albo korzystasz z innych implementacji kolekcji, które zostało stworzone do takich celów np. FastUtil, Trove,  HPPC itp. Tak naprawdę, w skrajnych przypadkach nie ma jednoznacznych odpowiedzi 😉</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-315</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Mon, 09 Dec 2019 09:01:41 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=421#comment-315</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-308&quot;&gt;Bambo&lt;/a&gt;.

Dzięki za komentarz. Dodałem odpowiedni akapit z wyjaśnieniem. Generalnie nie rozpatruję tutaj skrajnych przypadków, więc różnice w obu przypadkach są marginalne w przeciętnej aplikacji.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-308">Bambo</a>.</p>
<p>Dzięki za komentarz. Dodałem odpowiedni akapit z wyjaśnieniem. Generalnie nie rozpatruję tutaj skrajnych przypadków, więc różnice w obu przypadkach są marginalne w przeciętnej aplikacji.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Tomek		</title>
		<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-309</link>

		<dc:creator><![CDATA[Tomek]]></dc:creator>
		<pubDate>Sat, 07 Dec 2019 11:08:24 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=421#comment-309</guid>

					<description><![CDATA[&#062; Większość operacji wykonywanych na listach to dodawanie i odczytywanie. Jeśli chodzi o dodawanie elementów do ArrayList, to jest ono tak samo wydajne jak w LinkedList, gdy dodajemy elementy na końcu listy.

A co w skrajnym przypadku gdy ArrayLista jest już bardzo duża i dodajemy element który powoduje przekroczenie rozmiaru wewnętrznej tablicy (capacity)? Implementacja ArrayList musi wszystko skopiować do nowej, powiększonej tablicy, co może sprawić, że dodanie elementu zajmie O(n), zamiast O(1). Uśredniony czas dodania nowego elementu do tablicy jest podobny, ale warto być świadomym tej różnicy.]]></description>
			<content:encoded><![CDATA[<p>&gt; Większość operacji wykonywanych na listach to dodawanie i odczytywanie. Jeśli chodzi o dodawanie elementów do ArrayList, to jest ono tak samo wydajne jak w LinkedList, gdy dodajemy elementy na końcu listy.</p>
<p>A co w skrajnym przypadku gdy ArrayLista jest już bardzo duża i dodajemy element który powoduje przekroczenie rozmiaru wewnętrznej tablicy (capacity)? Implementacja ArrayList musi wszystko skopiować do nowej, powiększonej tablicy, co może sprawić, że dodanie elementu zajmie O(n), zamiast O(1). Uśredniony czas dodania nowego elementu do tablicy jest podobny, ale warto być świadomym tej różnicy.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Bambo		</title>
		<link>https://nullpointerexception.pl/dlaczego-zawsze-powinienes-uzywac-arraylist-w-javie/#comment-308</link>

		<dc:creator><![CDATA[Bambo]]></dc:creator>
		<pubDate>Sat, 07 Dec 2019 05:01:51 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=421#comment-308</guid>

					<description><![CDATA[Dodawanie na koncu ArrayList i LinkedList nie ma takiej samej wydajnosci. LinkedList jest zawsze stala w ArrayList moze byc baaardzo kosztowna. Polecam doczytac.]]></description>
			<content:encoded><![CDATA[<p>Dodawanie na koncu ArrayList i LinkedList nie ma takiej samej wydajnosci. LinkedList jest zawsze stala w ArrayList moze byc baaardzo kosztowna. Polecam doczytac.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
