java面試題基礎之集合篇


 

java面試題基礎之集合篇

1、ArrayList和Vector的區別

  參考:https://www.cnblogs.com/javaisbest/p/11795444.html

 

2、HashMap和Hashtable的區別

  二者都是Map的實現類,且底層都是哈希表,他們的區別有以下幾點:

  父類不同:

    HashMap的父類是AbstractMap,HashTable的父類是Dictionary

 

  初始化容量和擴容量不同:

    HashMap初始化容量為16,按2倍擴容;HashTanle初始化容量為11,按2倍+1擴容

 

  鍵和值是否可以為null:

    HashMap可以,HashTable不行

 

  線程安全上:

    HashMap不是線程安全的,HashTable是線程安全的

 

3、List和 Map區別?

  List集合是Connection集合的子接口

 

  存取數據的方式不同:

    List集合是單個存取,且存值是有序可重復的;而Map集合是根據鍵值對進行存取,鍵是無序不可重復的,值可以重復

 

4、List,Set, Map是否繼承自Collection接口?

  在java中的集合有兩大接口:Map和Connection,其它所有集合都是他們的實現類

  所以,List集合和Set集合繼承了Connection接口的,而Map集合不是

 

5、List、Map、Set三個接口,存取元素時,各有什么特點?

  存元素:

    List:單個存取,且元素的值有序可重復

    Map:鍵值對存取,鍵是無序不可重復的,值可以重復

    Set:單個存取,元素的值無序不可重復

 

  取元素:

    List取出元素for循環,foreach循環,Iterator迭代器迭代

    Map取出元素需轉換為Set,然后進行Iterator迭代器迭代,或轉換為Entry對象進行Iterator迭代器迭代

    Set取出元素foreach循環,Iterator迭代器迭代

 

6、說出ArrayList,Vector,LinkedList的存儲性能和特性

  ArrayList和Vector底層是數組,用數組方式存儲數據,這種方式查詢速度快,修改、刪除操作慢。

  LinkedList底層是雙向鏈表,將對象存放在獨立的空間中,這種方式修改數據快,查詢數據慢。

  

7、去掉一個Vector集合中重復的元素

  運用Set集合的不可重復性

  

  

 

 

 

 

 

 

 

 

8、Collection和Collections的區別。

  Collection是集合類的一個接口,其中包含了對集合類功能的實現和一些基本操作,有子接口List和Set

  Collections是一個類,是針對集合操作的工具類,其中包含對集合進行排序和二分查找的方法

 

9、Set里的元素是不能重復的,那么用什么方法來區分重復與否呢?是用==還是equals()?它們有何區別?

  從定義上來看:

    equals是一個方法,==是一個關系運算符

 

  當比較對象為基本數據類型時:

    只能用==

 

  當比較對象為引用數據類型時

    ==:比較的是兩個引用是不是指向同一個內存地址

 

     equals:比較的是兩個引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.

  

 

 

 

  由於Set集合中存放的是對象的引用,而需要比較的是引用的值是否相同,所以說用equals
10、你所知道的集合類都有哪些?主要方法?

  java中的集合類有兩大接口:Connection集合、Map集合

  Connection集合的兩大實現類:List集合、Set集合

  List集合的實現類:ArrayList、Vector、LinkedList

  Set集合的實現類:HashSet、TreeSet

  Map集合的實現類:HashMap、HashTable、TreeMap

  

  Connection集合的主要方法:

    add():向集合中添加元素

    isEmpty():集合是否為空

    size():判斷集合中元素個數

    contains(元素名稱):判斷該元素是否存在

    remove(元素名稱):刪除該元素

    toArray(數組名):將集合轉為數組

 

  Set集合由於實現了Connection接口,參考Connection

 

  相對於Collection,List增加了索引值的操作(索引值從0開始):

    add(索引值,添加的內容):指定的索引值處添加數據

    indexOf(查找的內容)/lastIndexOf(查找的內容):返回元素第一次/最后一次出現的位置的索引值:

    get(索引值):返回指定位置的元素

 

  ArrayList、Vector實現了List接口,參考List

  

  但LinkedList由於是雙鏈表,比較特殊:

    模擬棧(先進后出):進棧和出棧:push()、pop()

    模擬隊列(先進先出):進隊和出隊:offer()、poll()

 

 

      

  Map集合常用方法:

    put():添加元素

    replace():替換

    remove(鍵)/remove(鍵,值):刪除(前者:只要“鍵”匹配,則會直接刪除鍵值對;后者:需要“鍵”、“值”都匹配才會刪除鍵值對

    size():判斷集合的個數

    get(鍵):查詢;根據“鍵”查詢“值”,如果“鍵”不存在,則輸出null

    containsKey(鍵)/containsValue(值):查詢鍵/值是否存在

    keySet():返回所有鍵的集合

    變量.Values():返回所有值得集合

     entrySet():返回所有Entry的集合


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM