Ответ
Метод add(E) возвращает boolean, чтобы сигнализировать об изменении коллекции в результате операции. Это особенно важно для коллекций, которые не допускают дубликатов (как Set), или ограниченных коллекций (как очередь с фиксированной ёмкостью).
Семантика возвращаемого значения:
true— коллекция была изменена (элемент добавлен).false— коллекция осталась неизменной (элемент не был добавлен).
Примеры использования:
// 1. Set — добавление уникального элемента
Set<String> uniqueNames = new HashSet<>();
boolean added = uniqueNames.add("Alice"); // true
added = uniqueNames.add("Alice"); // false, дубликат не добавлен
// 2. List — обычно всегда возвращает true (дубликаты разрешены)
List<String> list = new ArrayList<>();
list.add("A"); // true
list.add("A"); // true
// 3. Ограниченная очередь (CapacityRestricted Queue)
Queue<Integer> boundedQueue = new ArrayBlockingQueue<>(2);
boundedQueue.add(1); // true
boundedQueue.add(2); // true
boundedQueue.add(3); // Выбрасывает IllegalStateException (если использовать add())
// Для безопасной проверки лучше использовать offer(), который возвращает false при переполнении
Практическая польза: Возвращаемое значение позволяет проверить успешность добавления без дополнительного вызова contains(), что делает код более эффективным и выразительным.