為什麼java中宣告多用Map,List而不是具體實現型別?

時間 2021-05-08 17:46:54

1樓:

比如介面的返回值,外部需要key,value 型別的資料結構,那就返回Map。至於你在實現的時候,如果沒有特殊需求,就用HashMap,高效讀寫;如果你需要排序,就來個TreeMap。但是對呼叫的人來說都是get(key),或者用迭代器。

2樓:

舉例List list = new ArrayList();

當我發現對該列表的增改操作多於查詢操作時,將該列表的實現改為List list = new LinekdList();

這樣只需要改實現而不需要改宣告型別就能完成更改.

另外spring之所以能夠和很多框架進行整合,有一部分原因是spring提供了介面,與之整合的框架實現其介面來實現的

3樓:

面向抽象而不面向具體。介面也就是一組抽象的協議,規定了物件應該具有的一組方法或特性。

為什麼不都用Object?其實如果你的類裡沒有使用任何介面的方法或特性是可以用Object的,取決於你的需求。

4樓:用心閣

面向介面程式設計,你關心的是這些物件的行為特性,而不是具體實現。比如Map只關心可以根據名字獲取值,而不關心是用鍊錶實現的,是用陣列實現的,使用雜湊表實現的,還是用二叉樹實現的。

為什麼C 遍歷多用 ,Java遍歷多用

張強 即使是C C 我也習慣用 因為你並不能確保你的迴圈體內不會存在改變i的操作,一旦改變i的資料,導致迴圈跳過了i 5的這個迴圈,那麼這個迴圈會成為死迴圈,所以我認為除非有特定用途,迴圈條件裡面最好使用乙個範圍而不是某乙個值 這裡用不等號是受迭代器遍歷寫法的影響。因為不是所有迭代器都支援用 號做比...

為什麼JavaScript中var宣告的物件(使用json格式)不能使用new來建立例項?

dboy 你問了乙個為什麼吃飯的筷子不能用來修自行車這樣的問題。語言是人設計的,人設計的時候決定 new只有跟函式才有意義 例項化 new 後面跟別的東西沒有意義。 路人乙 最最簡單的說法 因為function不是具體的值,而且乙個求值的過程。JSON為啥不能new,因為JSON已經有值了 被例項化...

為什麼java中要做IntegerCache這種設定?

Night Silent 所以 Integer 之類的包裝類都實現了 Comparable 介面啊,使用 compareTo 比較 Integer 就妥妥的 如果不按照設計意圖,而使用 比較,那就是坑了。Compares two objects numerically.param anotherIn...