Создание списка B из A с чётным полем y и вычислением y = 3·x/2

Преобразуйте каждый x в y, оставьте чётные результаты и создайте B. В показанном коде listA пуст, поэтому listB тоже будет пустым.

Короткий ответ

Что ответить на собеседовании

Преобразуйте каждый x в y, оставьте чётные результаты и создайте B. В показанном коде listA пуст, поэтому listB тоже будет пустым.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо построить список listB, отобрав из listA только те элементы, для которых вычисленное значение y является чётным. При этом y рассчитывается по формуле y = 3 * a.x / 2.

public class A{ public int x;}
public class B{
    public int y;
    public B(int y){this.y=y;}
}

List<A> listA = List.of();
List<B> listB = listA

Ответ

Преобразуйте каждый x в y, оставьте чётные результаты и создайте B. В показанном коде listA пуст, поэтому listB тоже будет пустым.

List<B> listB = listA.stream()
        .mapToLong(a -> 3L * a.x / 2)
        .filter(y -> y % 2 == 0)
        .mapToObj(y -> new B(Math.toIntExact(y)))
        .collect(java.util.stream.Collectors.toList());

Long для промежуточного умножения предотвращает переполнение int. Деление целочисленное с округлением к нулю; Math.toIntExact проверяет границы поля B.y. Входные элементы должны быть ненулевыми. Фильтрация x по чётности вместо вычисленного y дала бы другой результат.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее