#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
Комментариев нет:
Отправить комментарий