這是一個棘手的數據結構和數據組織案例。Java地圖內容比較
我具有從大的文件中讀取數據,併產生多種類型(例如,Boolean
,Integer
,String
),其被歸類於幾個(小於十幾)基團,然後存儲在數據庫中的對象的應用程序。
每個對象當前存儲在一個單一的HashMap<String, Object>
數據結構中。每個這樣的HashMap
對應於單個類別(組)。每個數據庫記錄都是根據所有類別(HashMap數據結構)中包含的所有對象中的信息構建的。
要求檢查後續記錄是否與列的數量和類型「等效」,必須通過比較每個地圖的名稱(HashMap
鍵)和每個類型(實際類別)存儲的對象。
我正在尋找一種有效的方式來實現此功能,同時保持原始對象的分類,因爲以最快的方式按類別列出對象也是一項要求。
一個想法是對鍵進行排序(例如,將HashMap
替換爲TreeMap
),然後遍歷所有地圖。另一種方法是僅複製TreeMap
中的所有內容,僅用於比較目的。
什麼是實現此功能的最有效方式?
另外,如果您將如何去查找連續記錄之間的差異(即添加的字段和刪除的字段)?
所以你的意思是我應該創建一個實現比較器
@PNS在第二次閱讀你的描述後,我再也不確定了,如果我理解正確的話。你從文件中讀取String,Boolean,Integer等類型。稍後您將討論關於記錄組合的列。原始人沒有這樣的,所以我假設一個記錄將轉化爲你談話的那些地圖之一,因爲keys = columns。但是,也許你可以首先評論一下以澄清它? – Omnaest 2012-04-29 08:48:06
你幾乎是正確的。記錄是所有地圖的聯合,鍵是列名。 – PNS 2012-04-29 21:58:49