Возможно ли boolean перевести в int для сортировки с помощью Comparable.
true = 1
false = -1
Может быть
boolean b = true;
int i = b ? 1 : -1
Не совсем понятно зачем, но можно так
boolean a = false;
int i = a ? 1 : -1;
Если нужно отсортировать массив Boolean, можно сделать так:
Boolean[] bools = new Boolean[]{true, false, true, false};
Arrays.sort(bools, new Comparator<Boolean>() {
@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;
});
Отсортировать массив можно довольно просто:
Arrays.sort(bools, (x, y) -> x == y ? 0 : x ? 1 : -1);
Но если в массиве действительно лежат booleaan'ы (т. е. это не поле какого-то объекта), то сортировать его не надо, достаточно просто посчитать количество.
Класс Boolean
уже реализует Comparable<Boolean>
, так что при сортировке дополнительные действия не требуются.
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть SpringBoot app, и есть задача: организувать список задач которые будут запускаться в определенное время
Нужно выводить изображение на канвасе через объект, все изображения необходимо добавить в объектПоскажите, как это сделать?
Уважаемые не подскажите или не подтолкнете к верному решениюЕсть два массива