java - 从 txt 文件创建对象,无需对每个对象进行硬编码
问题描述
我正在解决一个问题,其中我有一个需要转换为对象的 txt 文件。我的文件格式是:
阿拉巴马州::蒙哥马利::205764::155.4
州名和首都将作为 <String, Object> 加载到哈希图中。我已经成功加载了 Hashmap,但现在我需要创建每个单独的 Capital 对象。想知道是否有办法做到这一点,而无需对每个资本对象进行硬编码。也许是一个循环?不知道我如何在不硬编码的情况下命名它们。
到目前为止,这是我的主要方法:
public static void main(String[] args) throws Exception {
Scanner fileReader = new Scanner(new BufferedReader(new FileReader("MoreStateCapitals.txt")));
Map<String, Object> stateCapitals = new HashMap<>();
while (fileReader.hasNextLine()) {
String[] columns = fileReader.nextLine().split("::");
stateCapitals.put(columns[0], columns[1]);
}
Set<String> states = stateCapitals.keySet();
Collection<Object> capitals = stateCapitals.values();
}
这是我的资本类,带有 getter、setter 和 Constructor
private String name;
private int population;
private double squareMileage;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPopulation() {
return population;
}
public void setPopulation(int population){
this.population = population;
}
public double getSquareMileage() {
return squareMileage;
}
public void setSquareMileage(double squareMileage){
this.squareMileage = squareMileage;
}
public Capital(String name, int population, double squareMileage) {
this.name = name;
this.population = population;
this.squareMileage = squareMileage;
}
}
编辑: txt 文件中的第一个值的唯一用途是哈希图中的键,它不参与对象的创建
解决方案
我相信你需要改变这条线:
stateCapitals.put(columns[0], columns[1]);
进入
stateCapitals.put(columns[0], new Capital(columns[1], Integer.parseInt(columns[2]), Double.parseDouble(columns[3]));
这样,您将使用构造函数来创建对象。这假设您从中读取数据的文件中没有错误 - 如果文件不正确,您可能需要在创建/插入步骤之前分析这些行。
此外,即使您Collection
的 of Object
will 工作,您可能希望将其更改为 aCollection<Capitals>
以便能够访问您类的所有方法。
我希望它有所帮助。祝你好运。
推荐阅读
- javascript - 如何将嵌套 json 属性的值分配给父对象?
- python - TypeError 和 RuntimeError 工作正常后第一次运行
- python - 数据框是和对象而不是普通数据框?
- java - onBindViewHolder 无法识别视窗小部件
- wpf - 如何在 WPF 中获取 TreeView 节点?
- mysql - SQL:从名称以“_reports”结尾的多个表中选择 *
- react-native - 我可以在 React-Native 标记中的标签之间获取文本值吗
- java - 从数组中获取数据并在没有列表视图的情况下从小部件传递到活动
- file - 在 Mule 文件连接器中设置 createParentDirectory 函数的位置
- linux - 将 gzip 压缩文件反向通过管道传输到尾部/头部的快速方法