Вот задача, которая требует применения HashSet
для решения проблемы на основе пересечений множеств.
Задача: Найти общих друзей двух пользователей
Описание
В социальной сети у каждого пользователя есть список друзей. Напиши программу, которая определяет общих друзей для двух заданных пользователей.
Условия
- Программа должна принимать два списка друзей для двух пользователей.
- Найти и вывести всех общих друзей, используя
HashSet
. - Если общих друзей нет, вывести сообщение “Нет общих друзей”.
Пример
Вход:
Список друзей пользователя A: ["Иван", "Мария", "Анна", "Петр"]
Список друзей пользователя B: ["Анна", "Елена", "Петр", "Дмитрий"]
Выход:
["Анна", "Петр"]
Подсказка к решению
- Поместим друзей первого пользователя в
HashSet
, чтобы легко проверять их наличие. - Пройдем по списку друзей второго пользователя и выберем только тех, которые также находятся в
HashSet
. - Общие друзья будут собраны в результат.
Пример кода
import java.util.*;
public class CommonFriendsFinder {
public static void main(String[] args) {
List<String> friendsA = Arrays.asList("Иван", "Мария", "Анна", "Петр");
List<String> friendsB = Arrays.asList("Анна", "Елена", "Петр", "Дмитрий");
System.out.println("Общие друзья: " + findCommonFriends(friendsA, friendsB));
}
public static List<String> findCommonFriends(List<String> friendsA, List<String> friendsB) {
// Помещаем друзей первого пользователя в HashSet для быстрого поиска
HashSet<String> setA = new HashSet<>(friendsA);
// Создаем список для хранения общих друзей
List<String> commonFriends = new ArrayList<>();
// Проверяем, какие друзья из списка B есть в HashSet A
for (String friend : friendsB) {
if (setA.contains(friend)) {
commonFriends.add(friend);
}
}
// Если общих друзей нет, выводим сообщение
if (commonFriends.isEmpty()) {
System.out.println("Нет общих друзей");
}
return commonFriends;
}
}
Разбор решения
- Друзья первого пользователя добавляются в
HashSet
, чтобы сделать поиск быстрым (операцияcontains
дляHashSet
работает за (O(1))). - Мы проверяем каждого друга из второго списка: если он присутствует в
HashSet
первого пользователя, то это общий друг. - Собираем всех общих друзей в список и выводим его.
Эта задача демонстрирует применение HashSet
для быстрого поиска пересечений между двумя коллекциями, что полезно в задачах на анализ социальных сетей, поиске общих элементов и других подобных сценариях.