类对象与Hashmap

使用hashmap而不是使用对象类是好的……使用Hashmap ….

Map cellMap = new HashMap(); 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()); 

请在应用程序运行状况,内存要求等方面告诉我……

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

  • 散列映射具有比具有相同字段数的类更大的内存占用
  • 哈希地图强制拳击基元
  • 哈希映射创建和访问速度较慢

对可读性也有影响:当业务逻辑特定于具有固定数量字段的类时,特殊目的类明显胜出; 当动态配置字段时,哈希表是您唯一的选择。 您还可以使用混合设计,当对象在内部使用哈希映射时,在外部提供精美命名的字段,并公开语义以添加更多“字段”。

总而言之,在您决定使用哈希映射来实现其灵活性之前,您应该决定是否确实需要设计中的所有灵活性。 有时,答案是“是”,有时候是“不”; 对此没有“一刀切”的解决方案。

对象具有字段(数据)和方法(行为)。 如果您的数据包含一组固定的单元格(A,B和C),那么一定要使用一个对象。

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

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

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

在演出之前,您应该将此视为“设计”问题。 无需进行前期过早优化以支持良好的设计。 因此,问题是: “您是否需要通过中间集合来填充您的域对象ABC?” 在大多数情况下,我不会这样做,但如果不了解更大的背景,很难说明确的肯定或肯定的否定

更新: 30-40K:记录数与Object vs HashMap比较无关,因为它们将在循环中处理(免责声明:在设计方面与性能无关)。 但是,电子表格中的列数很重要,因为这将直接反映为对象中的属性数。

如果这只是一个数据迁移数据传输练习,那么我将采用HashMap方法。 假设ABC将是一个没有行为的短暂的,一次性的数据容器对象,则不需要创建它。 然后我会测试系统的性能,如果它不符合验收标准,那么我会对其进行分析并仅在必要时对其进行优化。