1. 程式人生 > >黑馬程式設計師—13—java基礎:有關集合類的學習筆記和心得體會

黑馬程式設計師—13—java基礎:有關集合類的學習筆記和心得體會

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

1. 為什麼出現集合類?

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

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

陣列雖然也可以儲存物件,但長度是固定的,集合長度是可變的,陣列中可以儲存基本

資料型別,集合只能儲存物件。

3. 集合類的特點:

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

集合類求長度用:size();

什麼是迭代器?

其實就是集合的取出元素的方式。

例子:

Class A

{

Public static void main(String[] args)

{

ArrayList  a1 = new ArrayList();//建立一個集合容器,使用Collection介面的子 //類,ArrayList             

a1.add(java01);

a1.add(java02);

a1.add(java03);

a1.add(

java04);

Sop(size:+a1.size());//獲取集合長度

Sopa1);//列印集合

a1.remove(java02);

a1.clear();//清空集合。

sop.(java03是否存在+a1.coontains(java03));

ArrayList  a2 = new ArrayList();

a2.add(java01);

a2.add(java02);

a2.add(java05);

a2.add(java06);

a1.retainAll(a2);//取交集,a1中只會保留和a2中相同的元素。

}

public static void method_get()

{

ArrayList  a1 = new ArrayList();

a1.add(java01);

a1.add(java02);

a1.add(java03);

a1.add(java04);

Iterator it = a1.iterator();//獲取迭代器,用於取出集合中的元素。

while(it.hasNext())//只要裡面有資料,則返回true,繼續迴圈

{

sop(it.next());

}

/*就把取出方式定義在集合的內部,這樣取出方式就可以直接訪問集合的元素,那麼取出方式就被定義成了內部類,把容器抽取共性,內部類都符合規則Iterator,取物件通過方法Iterator()*/

}

Public static void sop(Object obj)

{

System.out.println(obj);

}

}

4.4.1 Add方法的引數型別是Object,以便於接收任意型別物件。

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

5. Collection

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

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

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

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

Set:元素是無序的,元素不可以重複。

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

增:add(index,element);

     addAll(index,Collextion);

刪:removeindex

改:setindexelement

查:getindex);

    subListfromto

ListIterator();

6. List集合特有的迭代器,ListIteratorIterator的子介面。在迭代時,不可以通過集合對象的方法操作集合中的元素,因為會發生同步異常,所以,在迭代時,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能對元素進行判斷,取出,刪除的操作,如果想要其他的操作如新增,修改等,就需要使用其子介面,ListIterator,該介面只能通過List合的ListIterator方法獲取。

例子:ListIterator  li = a1.ListIterator();

  while(li.hasNext())

  {

Object obj = Li.next();

if(obj.equals(java02))

{

li.add(java02);

li.set(java006);

}

  }

  例hasNext()判斷後面有沒元素

     hasPrevious()判斷前面有沒元素

7. 列舉就是Vector特有的取出方式,發現列舉和迭代很像,其實列舉和迭代是一樣的,因為列舉的名稱以及方法的名稱都過長,所以被迭代器取代了。

8. LinkedList:特有方法:

addFirst();

addLast();

getFirst();

getLast();//獲取元素,但不刪除

removeFirst();//獲取元素,但刪除

removeLast();//如果元素為空,會出現空元素異常

jdk1.6出現了替代方法。

offerFirst()

offerLast()

peekFirst()

peekLast()

pollfirst()

pollLast()//同上功能一樣但是如果空時返回null

9. Set集合的功能和Collection是一致的

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

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

是通過袁術的兩個方法,hashCodeequals來完成。如果元素的HashCode值相同,才會判斷equals是否true,如果元素的hashCode值不同,不會呼叫equals

注意:對於判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashCodeequals方法

TreeSer

10.  學習心得和體會

掌握集合類的用法以及什麼時候和什麼地方用集合類;

    陣列和集合類同是容器,他們的區別

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

熟悉陣列和集合類用法上的不同,把它們熟練的應用到我的程式碼之中。