我的代码很长,但是我将包含相关代码段。我正在创建带有商店元素的GUI。我有一个名为PopularItemsTxt的文本字段,其中包含列表中3个最受欢迎的项目。
for(int i =0; i<3;i++) {
if(electronicStore.stock[i] != null) {
popularTxt.getItems().add(electronicStore.stock[i].toString());
}
}
但是,我有一个计算最终购物车中物品的按钮,当我按下该按钮时,我希望能够找到已添加到该列表中的3个最常见的物品。任何帮助/指导将不胜感激。
btnComplete.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
//if the list has a minimum of 1 item
if (currentCartTxt.getItems().size() > 0) {
for(int i =0; i<3;i++) {
if(electronicStore.stock[i] != null) {
popularTxt.getItems().add(electronicStore.stock[i].toString());
List<ElectronicStore> topThree = Arrays.stream(electronicStore.stock)
.sorted(Comparator.comparing(ElectronicStore::createStore).reversed())
.limit(3)
.collect(Collectors.toList());
}
}
}
});
现在,输出只是我的arraylist中的前三个项目。 比较时出现错误
答案 0 :(得分:0)
商店中的每个商品(假设商品是对象)都应具有一个属性来指示其受欢迎程度(一个int成员变量)。每次将商品添加到购物车时,将流行度指示器变量增加1,当商品由于某种原因而被删除时,也将其值减小1。这可以在“添加”和“删除”按钮动作侦听器中完成方法。
因此,最后,当购物车(假设这也是对象列表)完成时(即,按下btnComplete时),您可以根据受欢迎程度值以降序对购物车中的对象列表进行排序,并且排序后得到前三项。