第十四天 JavaAPI(集合類List Set)

2021-06-23 02:35:55 字數 2574 閱讀 6144

集合類

集合:物件導向語言對事物的體現都是以物件的形式,所有為了方便對多個物件的操作,

就對物件進行儲存,集合就是儲存物件最常用的一種方式。

陣列和集合類同是容器,區別:

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

陣列中可以儲存基本資料型別,集合只能儲存物件。

集合類特點

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

為什麼會出現這麼多容器?

因為每乙個容器都資料的儲存方式都不同。這個儲存方式稱之為:資料結構。

1、add方法的引數型別是object,以便於接收任意型別物件。

2、集合中儲存的都是物件的引用(位址)

迭代器:就是集合的取出元素的方式。

把取出方式定義在集合內部,這樣取出方式就可以直接訪問集合內容的元素。

那麼取出方式就被定義成了內部類。而每乙個容器的資料結構不同,

所以取出的動作細節也不同。但是都有共性內容判斷和取出,那麼可以寫共性抽取。

那麼這些內部類都符合乙個規則。該規則時候iterator。通過乙個對外提供的方法,

iterator();獲取集合的取出物件。

collection

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

|--arraylist:底層的資料結構使用的是陣列。特點:查詢速度很快,增刪稍慢。

|--linkedlist:底層使用的是鍊錶資料結構。特點:增刪速度很快,查詢稍慢。

|--vector:底層是陣列資料結構。執行緒同步。被arraylist替代。特點:增刪,查詢都稍慢。

|--set:元素是無序的,元素不可以重複。set集合跟collection是一樣的。

|--hashset:底層資料結構是雜湊表。

|--treeset:可以對set集合中的元素進行排序。底層資料結構是二叉樹。保證資料唯一性的依據:compareto方法return 0。

list:

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

增add(index,element);

addall(index,collection);

刪remove(index);

改set(index,element);

查get(index);

sublist(from,to);

listiterator();//列表迭代器

list集合特有的迭代器。listiterator是iterator的子介面。在迭代時,

不可以通過集合物件的方法操作集合中的元素。因為會發生concurrentmodificationexception異常。

所有,在迭代器時,只能用迭代器的方法操作元素,可是iterator方法是有限的,

只能對元素進行判斷,取出,刪除操作,如果想要其他的操作,如新增,修改等,

就需要使用其子介面,listiterator。該介面只能通過list集合的listiterator方法獲取。

列舉就是vector特有的取出方式。其實列舉和迭代器是一樣的。

因為列舉的名稱以及方法名稱都過長,所有被迭代器取代了。

linkedlist特有方法:

addfirst();

addlast();

getfirst();

getlast();

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

removefirst();

remevelast();

獲取元素,但是元素被刪除。如果集合中沒有元素,會出現nosuchelementexception.

在jdk1.6出現了替代方法。

offerfirst();

offerlast();

peekfirst();

peeklast();

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

pollfirst();

polllast();

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

堆疊:先進後出。 如:杯子。

佇列:先進先出。 如:水管。

list集合判斷元素是否相同,依據的是元素的equals方法。

set:

hashset是如何保證元素唯一性?

通過元素的兩個方法,hashcode和equals來完成。

如果元素hashcode值相同,才會判斷equals是否相同。

如果元素hashcode值不同,不會呼叫equals。

注意:

對於判斷元素是否存在,以及刪除等操作,依賴的是元素的hashcode和equals方法。

第十四天 Session

session通過sessionid來區分不同的客戶,session是以cookie或url重寫為基礎的,預設使用cookie來實現,系統會創造乙個名為jsessionid的輸出cookie,這稱之為session cookie,以區別persistent cookies 通常看不到jsession...

第十四天 response

教學導航 教學目標 案例二 生成驗證碼 了解 教學方法 我們在建立servlet時會覆蓋service 方法,或doget dopost 這些方法都有兩個引數,乙個為代表請求的request和代表響應response。service方法中的response的型別是servletresponse,而d...

Qt第十四天

qfiledialog檔案對話方塊 qcolordialog顏色對話方塊 qfontdialog字型對話方塊 qinputdialog輸入對話方塊 qmessagebox訊息框 dialog.h ifndef dialog h define dialog h include namespace ui...