我有一个属性的arrayList,我需要查看一个城市中的属性是否出现4000次以上,如果可以,则为按钮上色。
for(AirbnbListing abnb : List){
for(Button btn : arr) {
if(btn.getText().equals(abnb.getCity())) {
btn.setStyle("-fx-background-color: #FF4500");
}
}
}
一旦我的按钮等于城市名,我希望它检查它有4000个属性,但是我不确定如何执行此操作。有人可以帮我吗?
我可以做类似的事情吗?
if(btn.getText().equals(abnb.getCity()) && abnb.getCity().size() > 4000)
答案 0 :(得分:1)
首先按城市对属性进行分组,以便可以汇总计数:
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");
}
}