2012-09-02 51 views
0

我存儲在一個HashMap 3類型的對象中。是一個HashMap的一個合適的數據結構

HashMap<String, ArrayList<Car>> 

['Lorry', [list of lorries]] 
['Sport', [list of sport's cars]] 

HashMap中字符串鍵保持對象的類型(轎車的子類),在陣列的第二個元素存儲有例如對象屬性,如:ID,日期等

我必須做的四個主要事情是:

  1. 檢查某個ID在HashMap中存在的時候沒有提供它的類型的
  2. 打印元素的信息給定類型的某個ID。
  3. 打印某種類型的所有元素
  4. 如果每個對象已分配的某個屬性的布爾值爲「0」,則打印(不同類型的)集合中的所有元素。 「真正」;

HashMap是否正確的結構?如果涉及到第一點,我覺得有問題。似乎我將不得不遍歷整個集合,如果有的話,還有哪些其他集合更適合這種需求?

+0

什麼ID,然後鍵入區別?該ID只是一個唯一的標識符?關鍵的角色扮演什麼角色?將放置數據的示例分享到此HashMap中。 – Makoto

+0

ID是整個集合中的唯一標識符,「附加」到具體對象。類型只是汽車的類型,例如體育,卡車等 – lunar

+0

因此,它是安全的,然後假設ID <=>鍵,對不對?或者鍵入<=>鍵?澄清這部分,我們將能夠確定Map是否適合這項任務。 – Makoto

回答

0

A HashMap是該作業的正確數據結構,但在您的情況下,您可能會考慮使用兩個HashMaps:一個持有關係「汽車類型」 - >「該汽車類型」,第二個關係'ID' - >'帶該ID的汽車'。

2

的基本方法是合理的,但是因爲你只想要存儲的每個實例一次,Set是一個更好的選擇,而不是一個List的映射項值:

Map<String, Set<Car>> typeCache = new HashMap<String, HashSet<Car>>(); 

HashSet的方法很確實很快,所以如果你的地圖包含一個特定的實例,那麼價值不會很高。

使用地圖可能會更好,但 - 一次爲每個類型的查找,所以也使用:

Map<String, Object> idCache = new HashMap<String, Object>(); 
相關問題