查找数组中3个最常见的元素

时间:2019-03-11 01:39:56

标签: java listview user-interface actionevent

我的代码很长,但是我将包含相关代码段。我正在创建带有商店元素的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中的前三个项目。 比较时出现错误

1 个答案:

答案 0 :(得分:0)

商店中的每个商品(假设商品是对象)都应具有一个属性来指示其受欢迎程度(一个int成员变量)。每次将商品添加到购物车时,将流行度指示器变量增加1,当商品由于某种原因而被删除时,也将其值减小1。这可以在“添加”和“删除”按钮动作侦听器中完成方法。

因此,最后,当购物车(假设这也是对象列表)完成时(即,按下btnComplete时),您可以根据受欢迎程度值以降序对购物车中的对象列表进行排序,并且排序后得到前三项。