Преобразуйте каждый x в y, оставьте чётные результаты и создайте B. В показанном коде listA пуст, поэтому listB тоже будет пустым.
Создание списка B из A с чётным полем y и вычислением y = 3·x/2
Преобразуйте каждый 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 дала бы другой результат.