簡體   English   中英

類對象與Hashmap

[英]Class Object vs Hashmap

使用hashmap而不是使用對象類是好的......使用Hashmap ....

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());

請在應用程序運行狀況,內存要求等方面告訴我......

這很大程度上取決於您要實現的目標:為了靈活性,哈希映射更好。 但靈活性是有代價的:哈希映射也比具有相同數量的強類型字段的類更大更慢。

  • 散列映射具有比具有相同字段數的類更大的內存占用
  • 哈希地圖強制拳擊基元
  • 哈希映射創建和訪問速度較慢

對可讀性也有影響:當業務邏輯特定於具有固定數量字段的類時,特殊目的類明顯勝出; 當動態配置字段時,哈希表是您唯一的選擇。 您還可以使用混合設計,當對象在內部使用哈希映射時,在外部提供名稱很好的字段,並公開語義以添加更多“字段”。

總而言之,在您決定使用哈希映射來實現其靈活性之前,您應該確定您是否真的需要設計中的所有靈活性。 有時,答案是“是”,有時候是“不”; 沒有“一刀切”的解決方案。

對象具有字段(數據)和方法(行為)。 如果您的數據包含一組固定的單元格(A,B和C),那么一定要使用一個對象。

Java是一個OO對象,OO設計,封裝等可以幫助您構建健壯,可維護和快速的程序。

必須關聯可變數量的鍵和值時,Map非常有用。 但它只是一個數據結構,並不允許您封裝其他行為。

例如,您的對象中可能有一個getAAndB()方法,它返回與B連接的A。或者您可能有方法來轉換或查詢字段。 或者您可以將ABC實例傳遞給使用它們的其他對象。 使用具有明確定義的方法的對象ABD比使用Map<String, String>容易得多。 地圖的關鍵是什么? 他們的價值觀是什么? 它在哪里記錄? 如果您想更改鑰匙怎么辦? 如何檢測代碼中使用這些密鑰的所有位置?

在演出之前,您應該將此視為“設計”問題。 無需進行前期過早優化,有利於良好的設計。 所以,問題是: “你是否需要通過中間集合來填充你的域名對象ABC?” 在大多數情況下,我不會做它,但它很難說一個明確的肯定或明確沒有不知道的大背景。

更新: 30-40K:記錄數與Object vs HashMap比較無關,因為它們將在循環中處理(免責聲明:在設計方面與性能無關)。 但是,電子表格中的列數很重要,因為它將直接反映為對象中的屬性數。

如果這只是一個數據遷移數據傳輸練習,那么我將采用HashMap方法。 假設ABC將是一個沒有行為的短暫的,一次性的數據容器對象,則不需要創建它。 然后我會測試系統的性能,如果它不符合驗收標准,那么我會對其進行分析並僅在必要時對其進行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM