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

[JavaTutor.eu]<br /> Задача: Найти общих друзей двух<br /> пользователейJavaTutor.eu
опубликовал новую статью, ‘Задача:
Найти общих друзей двух пользователей

Вот ещё одна задача, которая требует
применения 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 для быстрого поиска
пересечений между двумя коллекциями, что
полезно в задачах на анализ социальных
сетей, поиске общих элементов и других
подобных сценариях.

Вы можете просмотреть последнюю запись по
адресу
https://javatutor.eu/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b0-%d0%bd%d0%b0%d0%b9%d1%82%d0%b8-%d0%be%d0%b1%d1%89%d0%b8%d1%85-%d0%b4%d1%80%d1%83%d0%b7%d0%b5%d0%b9-%d0%b4%d0%b2%d1%83%d1%85-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be/?utm_source=subscribe2&utm_medium=email&utm_campaign=postnotify&utm_id=1451&utm_title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0%3A%20%D0%9D%D0%B0%D0%B9%D1%82%D0%B8%20%D0%BE%D0%B1%D1%89%D0%B8%D1%85%20%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9%20%D0%B4%D0%B2%D1%83%D1%85%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%B9

Вы получили это письмо, так как просили
уведомлять вас о появлении новых записей.
С уважением,
JavaTutor.eu
webmaster@javatutor.eu

Leonid Kleimann

I like Java!

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