1. 程式人生 > >黑馬程式設計師----Java基礎之集合類(一)

黑馬程式設計師----Java基礎之集合類(一)

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ---------

集合

為什麼會出現集合類

面對物件的語言對事物的體現都是以物件的形式所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式.

陣列和集合同是容器,有何不同?

陣列雖然也可以儲存物件,但長度是固定的;集合長度是可變的.陣列中可以儲存基本資料型別,集合中只能儲存物件

集合類的特點

集合只用於儲存物件,集合長度是可變的,集合可以儲存不同型別的物件

集合框架的構成及分類


集合新增元素用的是add()方法

add方法的引數型別是Object,以便用於接受任意型別物件

集合中儲存的都是物件的引用(地址)

迭代器

什麼是迭代器呢?

其實就是集合的取出方式

Colletion:

list:元素是有序的,元素可以重複,因為該集合體繫有索引

set :元素是無序,元素不可以重複

list的特有方法,凡是可以操作角標的都是該體系特有的方法

1.增

add(index,elements);

addAll(index,Collection)

刪:

remove(index)

set(index,elements)

get(index)

subList(from,to)

listIterator();

List集合特有的迭代器.ListIterator是Iterator的子介面

在迭代時,不可以通過集合物件的方法操作集合中元素,因為會發生yichagn,所以,在迭代時,只能用迭代器來操作元素,可是Iterator方法是有限的,只能對元素進行判斷,取出,刪除的操作,如果想要其他的操作如,新增.修改等,就需要使用其子介面,ListIterator,該介面只能通過list集合的ListIterator方法來完成

舉例說明:


List集合中的常用子集

ArrayList:底層的資料結構使用的是陣列結構,特點查詢速度很快,但是增刪稍慢,執行緒不同步

LinkedList:底層使用的資料結構是連結串列資料結構.特點,增刪速度很快,查詢稍慢

Vector:底層是陣列資料結構.執行緒同步,被ArrayList替代啦!

Vector示例:

Vector的元素取出方式為列舉,是Vector特有的取出方式


LinkedList的特有方法

addFirst()      addLast()

新增元素

getFirst()     getLast()

獲取元素,但不刪除元素,如果集合中沒有元素,會出現NoSuchElementException

removeFirst()      removeLast()

獲取元素,但元素被刪除,如果集合中沒有元素,會出現NoSuchElementException

在JDK1.6出現了替代方法

offerFirst()        offerLast()

新增元素

peekFirst()      peekLast()

獲取元素,但不刪除元素,如果集合中沒有元素,會返回null

pollFirst()     pollLast()

獲取元素,但元素被刪除,如果集合中沒有元素,會返回null

練習:使用LinkedList模擬一個堆疊或者佇列的資料結構

堆疊:先進後出     佇列;先進先出


練習,起初ArrayList中的重複元素


set集合:功能基本和Collection一致

往hashSet集合中存入自定物件

姓名和年齡相同為同一個人,重複元素



HashSet集合:底層資料結構是雜湊表

HashSet是如何保證元素唯一性的呢?

是通過元素的兩個方法:hashCode和equals來完成的.如果元素的HashCode值相同,才會判斷equals是否為true如果元素的hashCode值不同,則不會呼叫equals方法

注意;對於判讀元素是否存在,以及刪除的操作,依賴的方法是元素的hashCode和equals方法.

TreeSet:可以對Set集合中的元素進行排序

練習;對傳入的學生物件的年齡進行排序



TreeSet:可以對Set集合中的元素進行排序.底層資料是二叉樹結構.保證元素唯一性的依據(compareTo方法 return 0)

TreeSet排序的第一種方式:讓元素自身具備比較性,元素需要實現Comparable介面,覆蓋compareTo方法.另一種方式也稱為元素的自然排序,或者叫預設順序

TreeSet的第二種排序方式

當元素自身不具備比較性時,或者具備的比較性不是所需的,這時就需要讓集合自身具備比較性>在集合初始化時,就有了比較性

練習:按照字串長度排序