如何使用Java函数从文件中读取数据并将其存储在HashMap中?
发布时间:2023-06-30 15:56:33
在Java中,我们可以使用File和Scanner类来从文件中读取数据,并使用HashMap来存储这些数据。
下面是一个简单的示例代码,其中文件中的数据是每行一个键值对,使用逗号分隔键和值:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner;
public class HashMapFromFile {
public static void main(String[] args) {
File file = new File("data.txt"); // 指定文件路径
HashMap<String, String> map = new HashMap<>(); // 创建HashMap
try {
Scanner scanner = new Scanner(file); // 创建Scanner以读取文件
while (scanner.hasNextLine()) { // 逐行读取文件内容
String line = scanner.nextLine(); // 读取一行数据
String[] parts = line.split(","); // 使用逗号分隔键和值
if (parts.length == 2) { // 确保键值对格式正确
String key = parts[0].trim(); // 获取键,去除首尾空格
String value = parts[1].trim(); // 获取值,去除首尾空格
map.put(key, value); // 存储键值对到HashMap中
}
}
scanner.close(); // 关闭Scanner
} catch (FileNotFoundException e) {
e.printStackTrace(); // 处理文件未找到异常
}
// 打印HashMap中的键值对
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + ": " + value);
}
}
}
在代码中,首先使用File类创建一个表示文件的对象,并传递文件路径作为参数。然后,我们创建一个HashMap对象来存储从文件中读取的数据。
接下来,我们使用Scanner类来读取文件。在while循环中,我们使用Scanner的hasNextLine方法检查文件中是否还有下一行。如果有,我们使用nextLine方法读取一行数据,并将其存储在line变量中。
然后,我们使用split方法将这一行数据分割为键和值,使用逗号作为分隔符。我们使用trim方法去除键和值的首尾空格,并存储在key和value变量中。
最后,我们使用put方法将键值对存储在HashMap中。在循环结束后,我们关闭Scanner。
最后,我们使用for循环遍历HashMap中的键值对,并打印出来。
注意,代码中使用的文件路径为相对路径,需要根据实际情况修改为正确的文件路径。
