2014-03-04 30 views
-5

使用java和最佳使用案例之間的區別是什麼 我不能理解這兩個概念可以由任何人解釋的例子。 What Java Collection should I use?使用java和最佳使用案例之間的區別是什麼

Map<string> map =new Hashmap<string>(); 
Hashmap<string> map =new Hashmap<string>(); 

和更好的使用。

注:任何一個可以指導我最好的電子書Java集合和數據結構

+3

'使用Interfaces'進行編程是您搜索的關鍵字。 –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ我想了解用法? – sanjaybrandtest1

+0

我可以看到你在問什麼,但你的問題本身毫無意義。你想知道將變量定義爲接口而不是實際實現類的好處嗎? –

回答

0

沒有真正的最佳實踐。

使用的界面Map<string> map = new Hashmap<string>();

  • 隱藏的具體實現算法
  • 最重要的是接口,你的對象可以做而不是如何去做

使用具體實施Hashmap<string> map = new Hashmap<string>();

  • 具體實現所有的接口方法,你可以有一些具體的實施

方法,它只是一個POO的問題後,我認爲純粹的球員將只使用接口,因爲它是更抽象和具體類型(算法)可以輕鬆更新。

但是,實際上,爲每個類型的類創建一個接口對於您的項目來說確實很髒,並且會創建多個無用的類/接口。所以對我來說這不是一個好主意。

總之,我更喜歡使用我真正需要的東西。如果保持泛型很重要,我使用接口Map,但在大多數情況下,我不關心這一點,我傾向於對此容器的抽象程度低於可能,所以我更喜歡使用HashMap。

事實上,它更像是一個圍繞着熊的巨魔和討論而非真實的迴應。每個開發者都有自己的感覺。

0

隨着Map<String> map = new HashMap<String>();您使用依賴注入的簡單形式。如果您使用的是HashMapTreeMap,您的代碼並不在乎,因爲您可以使用它們的通用界面。稍後,如果您想更改地圖類型,則只需在變量聲明中進行操作即可。

+0

同意,但哪一個是最佳實踐。 – sanjaybrandtest1

3

例如,一個區別是,如果您想稍後更改mapimplementsMap的另一種類型,則不能在第二個示例中這樣做。

快速例如:

Map<Type> map = new HashMap<>(); 
map = new TreeMap<>(); //:) 

HashMap<Type> map = new HashMap<>(); 
map = new TreeMap<>(); //:_(
+1

不錯的例子。 +1。 –

+1

現在你已經展示了它,在大多數情況下,你希望*防止將實現從'HashMap'改變爲'TreeMap',因爲這會破壞幾乎所有的代碼。 –

+0

@MarkoTopolnik確實。那麼,這是我可以想到的最快的例子來提出一個錯誤.. – Maroun

0

Mapinterface,而HashMapMap的具體實現。 因此,第二個構造將具有HashMap的功能,並且顯然已經實現了Map。

但是,如果您將Map的此實例傳遞給以Map作爲參數的函數,那麼將不會有差異。

0

除非您需要指定必須使用該接口的某個實現,否則使用該接口總是最佳實踐。

這是因爲它爲將來提供了最大的靈活性 - 通過消除對無關緊要的事物的依賴性來增加封裝。

相關問題