【008期】JavaSE面試題(八):集合之List

開篇介紹

大家好,我是Java最全面試題庫提褲姐,今天這篇是面試系列的第八篇,主要總結了JavaSE中集合相關面試題,集合面試分爲四篇來講,畢竟是重中之重!這是第一篇,主要是一些基礎的Collection及List相關的面試題,第二篇主要講解Set集合,第三篇和第四篇主要講解Map集合。在後續,會沿着第一篇開篇的知識線路一直總結下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天養成一個好習慣。

說一下集合的體系?

單列集合:
單列集合.png

雙列集合:
雙列集合.png

Collection 和 Collections的區別?

Collection
java.uitl 下的接口,他是各種集合的父接口,繼承於它的接口主要有set 和list;

Conllecitons
是個java.util下的,是針對集合的工具類,提供一系列靜態方法對各種集合的搜索,排序,線程安全化等操作。

List a=new ArrayList() 和 ArrayList a =new ArrayList()的區別?

List list = new ArrayList();這句創建了一個 ArrayList 的對象後把上溯到了 List。此時它是一個List對象了,有些ArrayList 有但是 List 沒有的屬性和方法,它就不能再用了。
ArrayList list=new ArrayList();創建一對象則保留了ArrayList 的所有屬性。所以需要用到 ArrayList 獨有的方法的時候不能用前者。
實例代碼如下:

List list = new ArrayList();
ArrayList arrayList = new ArrayList();
list.trimToSize(); //錯誤,沒有該方法。
arrayList.trimToSize(); //ArrayList裏有該方法。

Enumeration和iterator接口的區別?

  • Enumeration接口作用與iterator接口相似,但只提供了遍歷vector和HashTable類型集合元素的功能,不支持元素的移除操作
  • Enumeration速度是iterator的2倍,同時佔用更少的內存。但是,iterator遠比enumeration安全,因爲其他線程不能夠修改正在被iterator遍歷的集合裏面的對象。同時,iterator允許調用者刪除底層集合裏面的元素。

ListIterator有什麼特點,與iterator區別?

  • Iterator是ListIterator的父類接口
  • Iterator是單列集合(Collection)公共取出容器中元素的方式
    ListIterator是List集合的特有取出元素方式
  • Iterator中具備的功能只有hashNext(),next(),remove();
    ListIterator中具備着對被遍歷的元素進行增刪查改的方法,可以對元素進行逆向遍歷。

ArrayList集合加入1萬條數據,應該怎麼提高效率?

直接初始化ArrayList集合的初始化容量爲1萬。
但達到100萬以上乃至1000萬以上時,初始化容量方法效率會下降

說一下ArrayList和Vector的擴容?

ArrayList和Vector都有一個初始的容量大小。
ArrayList 是一個可改變大小的數組,當更多的元素加入到ArrayList中時,其大小將會動態地增長。
內部的元素可以直接通過get與set方法進行訪問,因爲ArrayList本質上就是一個數組.
Vector和ArrayList在更多元素添加進來時會請求更大的空間。
Vector每次請求其大小的雙倍空間,而ArrayList每次對size增長50%.(Vector默認增加原來的一倍,ArrayList默認增加原來的0.5倍)

注意:默認情況下ArrayList的初始容量非常小,所以如果可以預估數據量的話,最好分配一個較大的初始值,這樣可以減少調整大小的開銷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章