Страницы

Поиск по вопросам

суббота, 28 декабря 2019 г.

Возможно ли boolean перевести в int

#java


Возможно ли boolean перевести в int для сортировки с помощью Comparable. 

true = 1
false = -1

    


Ответы

Ответ 1



Может быть boolean b = true; int i = b ? 1 : -1

Ответ 2



Не совсем понятно зачем, но можно так boolean a = false; int i = a ? 1 : -1; Если нужно отсортировать массив Boolean, можно сделать так: Boolean[] bools = new Boolean[]{true, false, true, false}; Arrays.sort(bools, new Comparator() { @Override public int compare(Boolean o1, Boolean o2) { if (o1 && !o2) return 1; else if (!o1 && o2) return -1; else return 0; } }); или с лямбдой: Arrays.sort(bools, (o1, o2) -> { if (o1 && !o2) return 1; else if (!o1 && o2) return -1; else return 0; });

Ответ 3



Отсортировать массив можно довольно просто: Arrays.sort(bools, (x, y) -> x == y ? 0 : x ? 1 : -1); Но если в массиве действительно лежат booleaan'ы (т. е. это не поле какого-то объекта), то сортировать его не надо, достаточно просто посчитать количество.

Ответ 4



Класс Boolean уже реализует Comparable, так что при сортировке дополнительные действия не требуются. Boolean[] arr = new Boolean[] {true, false, true, false}; Arrays.sort(arr); Если нужно сортировать по булевому полю класса, сложности также не возникнут. public class Record { private final boolean flag; public boolean getFlag() { return flag; } ... } Record[] arr = new Record[] {new Record(true), new Record(false)}; Arrays.sort(arr, Comparator.comparing(Record::getFlag)); В конце концов, для сравнения примитивных boolean есть Boolean::compare System.out.println(Boolean.compare(false, true)); // -1

Комментариев нет:

Отправить комментарий