Попробуйте использовать .live()
вместо .bind()
; .live()
свяжет .hover
с вашим флажком после выполнения запроса Ajax.
Сначала сгруппируйте свойства по городам, чтобы вы могли объединить счетчики:
Map<String, Long> counts = List.stream().collect(
Collectors.groupingBy(AirbnbListing::getCity, Collectors.counting()));
Затем просто итерируйте по кнопкам и найдите счетчик на карте:
for (Button btn : arr) {
if (counts.getOrDefault(btn.getText(), 0L) > 4000) {
btn.setStyle("-fx-background-color: #FF4500");
}
}