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);
}
}