Loading... 在Java编程中,统计每个项目下的每个类别的数据通常涉及数据结构的设计和操作。本文将详细介绍如何使用Java统计每个项目下的每个类别的数据,主要涵盖数据模型的设计、数据存储和统计方法。 ### 一、数据模型设计 首先,需要定义数据模型来表示项目和类别。我们可以使用两个类:`Project`和 `Category`。 ![](https://www.8kiz.cn/usr/uploads/2024/07/1954833331.png) #### **1. Category 类** `Category`类表示一个类别及其计数。 ```java 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`类包含项目名称和其相关的类别列表。 ```java 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`来存储所有项目,并提供方法来统计每个项目下的每个类别的数据。 ```java 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`类来添加项目和类别,以及增加类别计数,并最终打印统计结果。 ### 四、思维导图 为了更好地理解整个流程,可以通过以下思维导图来总结: ```plaintext ┌───────────────────────────────┐ │ ProjectManager │ └───────────────────────────────┘ ┃ ┌──────────┻──────────┐ │ │ addProject addCategoryToProject │ │ ┌─┴─┐ ┌───┴───┐ │ │ │ │ Project Project Category ┌─┴─┐ ┌───┴───┐ │ │ │ │ ProjectName CategoryName Count ``` ### 五、总结 通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。 最后修改:2024 年 07 月 15 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏