Сравнить две логические переменные при помощи операторов "<", ">"

Мне нужно реализовать вывод на экран только тех элементов коллекции, у которых цитата:

значение поля 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 шт):

Автор решения: Stanislav Volodarskiy

Из вашего 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();
→ Ссылка