Сравнить две логические переменные при помощи операторов "<", ">"
Мне нужно реализовать вывод на экран только тех элементов коллекции, у которых цитата:
значение поля speaking которых больше заданного
где speaking - логическая переменная, и магическое "заданное" - тоже значение логической переменной, но уже введённое пользователем. Другими словами, нужно реализовать операторы ">" и "<", но для boolean переменных.
Звучит глупо, но таково задание. Так что, нужно как-то сделать.
Максимум, на что меня хватило - это написать вот такой код:
List<Dragon> list = new ArrayList<>(collectionManager.getCollection());
list = list.stream().filter(o-> o.getSpeaking().equals(Boolean.valueOf(arg))).toList();
Но так я получаю только объекты, у которых speaking равен введённому, а не меньше/больше. Прошу помощи и благодарю за потраченное время.
P.S. Стоит, наверное, разъяснить какие результаты ожидаются от кода. Насколько я понял, если пользователь введёт true, то программа должна ничего не выводить. Если false - выводить только объекты у которых значение поля speaking true. Вообще, нужна ещё функция с обратным действием(поменять в предыдущих предложениях true и false местами), но там я уже сам на примере разобраться смогу.
Ответы (1 шт):
Из вашего P.S. получается такой псевдокод:
if arg:
do nothing
else:
if o.speaking:
print o
Шаг 1:
if not arg:
if o.speaking:
print o
Шаг 2:
if not arg and o.speaking:
print o
На языке Java:
List<Dragon> list = new ArrayList<>(collectionManager.getCollection());
list = list.stream().filter(o -> !Boolean.valueOf(arg) && o.getSpeaking()).toList();