Вы сейчас просматриваете Задача: Найти общих друзей двух пользователей

Задача: Найти общих друзей двух пользователей

Вот задача, которая требует применения HashSet для решения проблемы на основе пересечений множеств.


Задача: Найти общих друзей двух пользователей

Описание

В социальной сети у каждого пользователя есть список друзей. Напиши программу, которая определяет общих друзей для двух заданных пользователей.

Условия

  1. Программа должна принимать два списка друзей для двух пользователей.
  2. Найти и вывести всех общих друзей, используя HashSet.
  3. Если общих друзей нет, вывести сообщение “Нет общих друзей”.

Пример

Вход:
Список друзей пользователя A: ["Иван", "Мария", "Анна", "Петр"]
Список друзей пользователя B: ["Анна", "Елена", "Петр", "Дмитрий"]

Выход:
["Анна", "Петр"]

Подсказка к решению

  1. Поместим друзей первого пользователя в HashSet, чтобы легко проверять их наличие.
  2. Пройдем по списку друзей второго пользователя и выберем только тех, которые также находятся в HashSet.
  3. Общие друзья будут собраны в результат.

Пример кода

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;
    }
}

Разбор решения

  1. Друзья первого пользователя добавляются в HashSet, чтобы сделать поиск быстрым (операция contains для HashSet работает за (O(1))).
  2. Мы проверяем каждого друга из второго списка: если он присутствует в HashSet первого пользователя, то это общий друг.
  3. Собираем всех общих друзей в список и выводим его.

Эта задача демонстрирует применение HashSet для быстрого поиска пересечений между двумя коллекциями, что полезно в задачах на анализ социальных сетей, поиске общих элементов и других подобных сценариях.

Leonid K

I like Java!

Добавить комментарий