问题描述
我承认这可能是一个简单的问题,但我似乎无法对此问题思索。假设我正在使用Java中的BufferedReader读取一个.txt文件,该文件可能看起来像这样:
Category: Dairy
Yogurt
Cheese
Butter
Category: vegetables
Carrots
Cucumbers
Category: Snacks
Granola Bars
Trail Mix
Chips
Candy
Pop Tarts
我想创建一个HashMap,例如 groceries ,它将这些项目映射到其各自的类别。例如:
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)
}
}
同样,这就是我最初尝试过的。让我知道是否需要进一步澄清。
解决方法
这可以激发灵感(在任何人关闭它之前): 您要构建的结构是地图(键值结构)而不是列表。
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);
}
}