BOOKJAVA Telegram 3871
💡 Почему в Set.of() в Java нельзя добавить дубликаты и null?

Когда используешь Set.of(...), можно столкнуться с двумя неожиданностями:

1. Нельзя добавлять дубликаты
2. Нельзя добавлять null

Разбираемся, почему так:

🔐 Set.of(...) — это immutable Set

Метод Set.of(...), добавленный в Java 9, создаёт неизменяемое множество. Это значит:

* После создания ты не можешь изменить его (добавить, удалить элемент).
* Все элементы внутри должны быть уникальны и не должны быть null.

📛 Почему нельзя дубликаты?

Потому что Set по определению — это коллекция уникальных элементов.
А Set.of(...) бросает IllegalArgumentException, сразу во время создания, если переданы дубликаты:


Set.of("a", "b", "a"); // 💥 Бросит исключение!


Это сделано для того, чтобы не было тихих ошибок — чтобы ты сразу увидел, что передал неуникальные значения.

🕳️ Почему нельзя null?

Set.of(...) не принимает null, потому что он реализован через внутренние immutable структуры, которые не допускают null`-значений. При попытке добавить `null получишь NullPointerException.


Set.of("a", null); // 💥 NullPointerException


Это сделано сознательно — null может вести к неочевидным багам и плохо сочетается с концепцией неизменяемых коллекций.


👀 Хочешь изменяемый Set, который принимает null и дубликаты фильтрует сам? Используй HashSet:


Set<String> set = new HashSet<>();
set.add(null); // Можно


👉@BookJava
👍4🤔3



tgoop.com/BookJava/3871
Create:
Last Update:

💡 Почему в Set.of() в Java нельзя добавить дубликаты и null?

Когда используешь Set.of(...), можно столкнуться с двумя неожиданностями:

1. Нельзя добавлять дубликаты
2. Нельзя добавлять null

Разбираемся, почему так:

🔐 Set.of(...) — это immutable Set

Метод Set.of(...), добавленный в Java 9, создаёт неизменяемое множество. Это значит:

* После создания ты не можешь изменить его (добавить, удалить элемент).
* Все элементы внутри должны быть уникальны и не должны быть null.

📛 Почему нельзя дубликаты?

Потому что Set по определению — это коллекция уникальных элементов.
А Set.of(...) бросает IllegalArgumentException, сразу во время создания, если переданы дубликаты:


Set.of("a", "b", "a"); // 💥 Бросит исключение!


Это сделано для того, чтобы не было тихих ошибок — чтобы ты сразу увидел, что передал неуникальные значения.

🕳️ Почему нельзя null?

Set.of(...) не принимает null, потому что он реализован через внутренние immutable структуры, которые не допускают null`-значений. При попытке добавить `null получишь NullPointerException.


Set.of("a", null); // 💥 NullPointerException


Это сделано сознательно — null может вести к неочевидным багам и плохо сочетается с концепцией неизменяемых коллекций.


👀 Хочешь изменяемый Set, который принимает null и дубликаты фильтрует сам? Используй HashSet:


Set<String> set = new HashSet<>();
set.add(null); // Можно


👉@BookJava

BY Библиотека Java разработчика




Share with your friend now:
tgoop.com/BookJava/3871

View MORE
Open in Telegram


Telegram News

Date: |

Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. Users are more open to new information on workdays rather than weekends. Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information.
from us


Telegram Библиотека Java разработчика
FROM American