类对象与哈希映射

2022-09-01 11:45:52

使用哈希映射而不是使用对象类是好的吗......使用哈希映射....

Map<String, String> cellMap = new HashMap<String, String>();
int j = 0;
while (cellIter.hasNext()) 
{
   HSSFCell myCell = (HSSFCell) cellIter.next();
   cellMap.put(columnMap[j], myCell.toString());
   j++;
}

并使用对象类.....

ABC abc= new ABC(); 
abc.setA(myRow.getCell(0).toString());
abc.setB(myRow.getCell(1).toString());
abc.setC(myRow.getCell(2).toString());

请告诉我应用程序运行状况,内存要求等...


答案 1

这在很大程度上取决于您要实现的目标:为了灵活性,哈希映射更好。但灵活性是有代价的:哈希映射也比具有相同数量的强类型字段的类更大,更慢。

  • 哈希映射的内存占用量比具有相同字段数的类大
  • 哈希映射强制对基元进行装箱
  • 哈希映射的创建和访问速度较慢

对可读性也有影响:当您的业务逻辑特定于具有固定数量字段的类时,特殊用途的类显然会获胜;当字段是动态配置的,哈希表是唯一的选择。您也可以采用混合设计,当对象在内部使用哈希映射进行存储时,在外部显示名称良好的字段,并公开语义以随时添加更多“字段”。

总而言之,在你决定使用哈希映射的灵活性之前,你应该决定你的设计是否真的需要所有这些灵活性。有时,答案是“是”,有时是“否”;对此没有“一刀切”的解决方案。


答案 2

对象具有字段(数据)和方法(行为)。如果数据由一组固定的单元格(A、B 和 C)组成,则绝对要使用对象。

Java是一个OO对象,OO设计,封装等可以帮助您构建健壮,可维护且快速的程序。

当您必须关联可变数量的键和值时,Map 非常有用。但它只是一个数据结构,不允许你封装其他行为。

例如,对象中可能有一个 getAAndB() 方法,该方法返回与 B 连接的 A。或者,您可能有转换或查询字段的方法。或者,您可以将 ABC 实例传递给使用它们的其他对象。使用具有明确定义方法的对象 ABD 比使用 .地图的关键是什么?他们的价值观是什么?它在哪里记录?如果要更改密钥,该怎么办?您将如何检测代码中使用这些键的所有位置?Map<String, String>