java怎么统计每个项目下的每个类别的数据

一、数据模型设计

首先,需要定义数据模型来表示项目和类别。我们可以使用两个类:Project和 Category

1. Category 类

Category类表示一个类别及其计数。

public class Category {
    private String name;
    private int count;

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

    public String getName() {
        return name;
    }

    public int getCount() {
        return count;
    }

    public void incrementCount() {
        this.count++;
    }
}
​
 
 

2. Project 类

Project类包含项目名称和其相关的类别列表。

import java.util.HashMap;
import java.util.Map;

public class Project {
    private String name;
    private Map<String, Category> categories;

    public Project(String name) {
        this.name = name;
        this.categories = new HashMap<>();
    }

    public String getName() {
        return name;
    }

    public Map<String, Category> getCategories() {
        return categories;
    }

    public void addCategory(String categoryName) {
        categories.putIfAbsent(categoryName, new Category(categoryName));
    }

    public void incrementCategoryCount(String categoryName) {
        Category category = categories.get(categoryName);
        if (category != null) {
            category.incrementCount();
        }
    }
}
​
 
 

二、数据存储与统计

我们使用一个 Map来存储所有项目,并提供方法来统计每个项目下的每个类别的数据。

import java.util.HashMap;
import java.util.Map;

public class ProjectManager {
    private Map<String, Project> projects;

    public ProjectManager() {
        this.projects = new HashMap<>();
    }

    public void addProject(String projectName) {
        projects.putIfAbsent(projectName, new Project(projectName));
    }

    public void addCategoryToProject(String projectName, String categoryName) {
        Project project = projects.get(projectName);
        if (project != null) {
            project.addCategory(categoryName);
        }
    }

    public void incrementCategoryCount(String projectName, String categoryName) {
        Project project = projects.get(projectName);
        if (project != null) {
            project.incrementCategoryCount(categoryName);
        }
    }

    public void printStatistics() {
        for (Project project : projects.values()) {
            System.out.println("Project: " + project.getName());
            for (Category category : project.getCategories().values()) {
                System.out.println("  Category: " + category.getName() + ", Count: " + category.getCount());
            }
        }
    }

    public static void main(String[] args) {
        ProjectManager manager = new ProjectManager();

        // 添加项目
        manager.addProject("Project1");
        manager.addProject("Project2");

        // 添加类别到项目
        manager.addCategoryToProject("Project1", "CategoryA");
        manager.addCategoryToProject("Project1", "CategoryB");
        manager.addCategoryToProject("Project2", "CategoryA");

        // 增加类别计数
        manager.incrementCategoryCount("Project1", "CategoryA");
        manager.incrementCategoryCount("Project1", "CategoryA");
        manager.incrementCategoryCount("Project1", "CategoryB");
        manager.incrementCategoryCount("Project2", "CategoryA");

        // 打印统计结果
        manager.printStatistics();
    }
}
​
 
 

三、详细解析

1. ProjectManager 类

ProjectManager类负责管理所有项目,并提供方法来添加项目、添加类别到项目以及增加类别的计数。

  • addProject(String projectName):添加一个新的项目。
  • addCategoryToProject(String projectName, String categoryName):将类别添加到指定项目。
  • incrementCategoryCount(String projectName, String categoryName):增加指定项目下类别的计数。
  • printStatistics():打印所有项目及其类别的统计数据。

2. 使用示例

在 main方法中,演示了如何使用 ProjectManager类来添加项目和类别,以及增加类别计数,并最终打印统计结果

posted @ 2025-08-11 09:58  我是一只小小鸟~  阅读(6)  评论(0)    收藏  举报