Задача: Найти общих друзей двух
пользователей
опубликовал новую статью, ‘Задача:
Найти общих друзей двух пользователей‘
Вот ещё одна задача, которая требует
применения 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
для быстрого поиска
пересечений между двумя коллекциями, что
полезно в задачах на анализ социальных
сетей, поиске общих элементов и других
подобных сценариях.
Вы получили это письмо, так как просили
уведомлять вас о появлении новых записей.
С уважением,
JavaTutor.eu
webmaster@javatutor.eu