List:數(shù)據(jù)是有順序(添加的先后順序)的,數(shù)據(jù)是可以重復(fù)的

ArrayList:內(nèi)部結(jié)構(gòu)是數(shù)組,比較適合做高頻率的查找、遍歷

LinkedList:雙向鏈表,比較適合做高頻率的新增和刪除

繼承和實(shí)現(xiàn)叫功能的擴(kuò)展(子類獨(dú)有的方法)

面試題

Collection和map接口的區(qū)別

Collection是存儲單值的最大父接口

Map是存儲對值的最大父接口

ArrayList和LinkedList的區(qū)別

 

ArrayList和Vector的區(qū)別

Vector幾乎和ArrayList一模一樣

ArrayList是線程異步,線程不安全

Vector是線程同步,線程安全

Collection接口下的兩個子接口:

List:有順序,元素可以重復(fù),順序指的是添加的先后順序

Set:無序,元素不可以重復(fù),順序指的是添加的先后順序

List和Set的區(qū)別

 

Set其實(shí)是有順序的,內(nèi)部有一個專門排序的算法

  1. 無序不等于隨機(jī)
  2. 所謂的無序指的是沒有按照添加的先后順序,其實(shí)內(nèi)部是做了排序的

引用數(shù)據(jù)類型

set集合所謂的不能重復(fù),默認(rèn)情況下是比較地址

Set集合如何確保數(shù)據(jù)的不重復(fù)?

保證數(shù)據(jù)類型的類要重寫hashCode和equals方法。

TreeSet(可以排序的Set集合)

排序規(guī)則:要排序的對象的類必須實(shí)

現(xiàn)Comparable接口(泛型接口)     

CompareTo方法:

返回值是int類型,代表排序結(jié)果

負(fù)數(shù)-1:代表比較的兩個值

0:代表兩個值相等

正數(shù)1:代表變焦的兩個值調(diào)用者大

LinkedHashSet:在添加數(shù)據(jù)的同時維護(hù)數(shù)據(jù)的

HashSet和LinkedHashSet的區(qū)別和聯(lián)系?

比較接口:

Comparable接口:自然排序,排序規(guī)則是固定的。

Comparator接口:臨時排序

實(shí)例

Map接口(泛型接口)

  1. 存儲對值 K -V
  2. key不能重復(fù),value可以重復(fù)
  3. 沒有順序(添加的先后順序)

HashMap內(nèi)部存儲結(jié)構(gòu):

Jdk1.7之前:鏈表 + 二叉樹

Jdk1.7及之后鏈表 + 數(shù)組 + 紅黑樹

HashMap基本上面試90%會問原理。

Hashtable和HashMap區(qū)別:

  1. HashMap是線程同步,線程不安全的。Hashtable是線程異步,線程安全的
  2. HashMap的key是可以為null的。Hashtable的key是不可以為null的

Properties:屬性

Properties是Hashtable的子類,更多的是用來操作屬性文件。

List集合的遍歷

1.for循環(huán)

2.foreach語句  增強(qiáng)for循環(huán)

3.迭代器  Iterator

Set集合的遍歷

1.增強(qiáng)for循環(huán)

2.迭代器

Map集合的遍歷

1.for循環(huán)

 

2.增強(qiáng)for循環(huán)

3.增強(qiáng)for循環(huán)(Entry)

4.迭代器