如何读入文件,以便对于包含特定字符串的每一行,将下面的行保存到 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);
}
}
我承认这可能是一个简单的问题,但我似乎无法理解它。假设我有一个 .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);
}
}