2016-07-19 50 views
0

我在訪問中被問到了這個問題。我認爲這個問題太籠統了,無法指定特定的數據結構。在java中存儲10,000條記錄的最佳數據結構

不過,還是如果我們疏導問題以下的標準將是最佳的數據結構的內容:

  1. 如果插入速度應該是最快的?
  2. 如果搜索特定數據的速度最快?
+2

看看[big-o-summary-for-java-collections-framework-implementation](http://stackoverflow.com/questions/559839/big-o-summary-for-java-collections-framework -implementations)。你會在那裏找到答案。 – MockerTim

+1

通常他們可能希望你提出更多的問題來澄清他們的問題,比如 - 你想用什麼記錄?數據集很少發生變化 - 主要是閱讀?數據集確實插入並刪除了很多? – Tin

+0

爲了更快的插入 - 鏈接列表,更快的搜索 - 二叉搜索樹,哪一個更重要? – SomeDude

回答

6

HashSet提供了O(1)插入和O(1)搜索,這從理論的角度來看很難超出。

實際上,對於大小爲10.000的引用,排序的ArrayList可能仍然優於HashSet,儘管插入爲O(n),搜索爲O(log(n))。爲什麼?因爲它將數據(至少是引用)存儲在連續的內存範圍內,因此可以利用硬件內存緩存。

大O符號的問題是它完全忽略了單個操作所需的時間。對於漸近考慮和非常龐大的數據集來說,這很好,但對於10.000的大小來說,這可能會產生誤導。

雖然沒有嘗試過。我敢打賭你的面試官也沒有:)。

相關問題