一个list分类,另个list对象根据分类进行统计数量

public static class Category {
        private String name;

        public Category(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return "Category{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }

    public static class DataItem {
        private String category;
        private String value;

        public DataItem(String category, String value) {
            this.category = category;
            this.value = value;
        }

        public String getCategory() {
            return category;
        }

        public String getValue() {
            return value;
        }

        @Override
        public String toString() {
            return "DataItem{" +
                    "category='" + category + '\'' +
                    ", value='" + value + '\'' +
                    '}';
        }
    }


    public static void main(String[] args) {
        // 分类标准列表
        List<Category> categories = new ArrayList<>();
        categories.add(new Category("fruit"));
        categories.add(new Category("vegetable"));

        // 数据源列表
        List<DataItem> dataItems = new ArrayList<>();
        dataItems.add(new DataItem("fruit,vegetable", "apple"));
        dataItems.add(new DataItem("fruit", "banana"));
        dataItems.add(new DataItem("vegetable", "carrot"));
        dataItems.add(new DataItem("fruit", "apple"));
        dataItems.add(new DataItem("fruit", "banana"));
        dataItems.add(new DataItem("vegetable", "carrot"));
        dataItems.add(new DataItem("fruit", "banana"));

        // 创建一个映射来存储分类及其对应的出现次数
        Map<String, Integer> categoryCounts = new HashMap<>();

        // 初始化分类计数器
        for (Category category : categories) {
            categoryCounts.put(category.getName(), 0);
        }

        // 遍历数据源列表,统计每个分类的出现次数
        for (DataItem item : dataItems) {
            String category = item.getCategory();
                //这个位置处理包含问题
                if (category.contains(",")){
                String[] arr = category.split(",");
                for (String s : arr){
                    if (categoryCounts.containsKey(s)) {
                        categoryCounts.put(s, categoryCounts.get(s) + 1);
                    }
                }
            }else {
                if (categoryCounts.containsKey(category)) {
                    categoryCounts.put(category, categoryCounts.get(category) + 1);
                }
            }
        }

        // 输出结果
        for (Category category : categories) {
            String categoryName = category.getName();
            int count = categoryCounts.get(categoryName);
            System.out.println("Category: " + categoryName + ", Count: " + count);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值