如何读入文件,以便对于包含特定字符串的每一行,将下面的行保存到 HashMap?

How do I read in a file such that for each line that contains a certain string, save the lines underneath to a HashMap?

我承认这可能是一个简单的问题,但我似乎无法理解它。假设我有一个 .txt 文件,我正在 Java 中使用 BufferedReader 读取它可能看起来像这样:

Category: Dairy
Yogurt
Cheese
Butter
Category: Vegetables
Carrots
Cucumbers
Category: Snacks
Granola Bars
Trail Mix
Chips
Candy
Pop Tarts

我想创建一个 HashMap,例如,名为 groceries 的 HashMap 会将项目映射到其各自的类别。例如:

groceries.put("item", "category");

如何以跟踪哪个项目属于哪个类别的方式读取此文件,以便我可以以有意义的方式将其放入 HashMap?这是我到目前为止所尝试的粗略想法。 (我最初尝试使用 ArrayLists,但发现 HashMaps 可能更适合映射数据)

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = in.readLine()) != null) {
            if (line.contains("Category")){
                
                  (save in an arrayList() called Category)

            }
            else{
                  (save in arrayList() called Item)
            }
        }

同样,这正是我最初尝试的。如果需要进一步说明,请告诉我。

这可以激发灵感(在任何人关闭它之前): 您要构建的结构是映射(key-value 结构)而不是列表。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)));
String line;
String currentCategory = "";
Map<String, String> groceries = new HashMap<>();
while ((line = in.readLine()) != null) {
    if (line.startsWith("Category: ")) {
        currentCategory = line.substring(10);
    } else {
        groceries.put(line, currentCategory);
    }
}