關於Java中Stack類的使用

標籤(空格分隔): java


- 爲什麼不用Stack類

《Java編程思想》第四版一書中明確不建議我們使用java.util.Stack類,一直保留只是爲了兼容以前的版本,在17.13.3中提到了原因。主要是因爲:
Stack類是繼承自Vector類,而不是使用Vector來實現Stack,這就產生了一個問題,Vector上可以使用的方法Stack類都可以使用,所以很容易破壞棧應有的規則。在本書的11.8中提到建議使用LinkedList實現棧。

PS:Stack是爲了專門實現棧而創建的類,作者在文中也提到“竟然不是用Vector來構建Stack,而是繼承Vector”,可見作者也認爲額外的操作是使用Stack類所不能容忍的。但這和建議使用LInkedList不能同一看待,因爲一個是專用類,而另外一個是建議實現Stack的一種手段(不能因爲可以實現Stack而不能有其他的操作,LinkedList畢竟不是爲了Stack而生)。

- 爲什麼不用Vector類

  1. Vector由於是線程安全的,所以在單線程的時候效率會叫ArrayList更低。在Java 1.2 出現ArrayList之後基本上就使用起來代替Vector。在多線程中ArrayList可以使用Collectiuons.synchronized方法來保證多線程環境下的安全使用。
  2. 在本書17.13.1中提到另一個原因就是又長又難記的方法名。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章