初談Java集合

2021-07-28 13:29:58 字數 1655 閱讀 2495

1.集合是什麼?

簡單來說,集合=陣列+對陣列的演算法,一般在實際操作過程中,批量管理陣列就是使用集合或者陣列。

此外要注意的是:集合中儲存的是引用型別,並且集合只儲存每個元素物件的引用,而並非將元素物件本身存入集合中!因此導致,如果在集合之外修改集合中的元素,那麼集合也會受影響。

2.集合框架

總的來說,集合框架包括三個方面:collection、iterator和泛型機制,詳細見下圖:

collection介面——定義了集合必須實現的api標準

注意:collection介面不能直接例項化,list和set也不能直接例項化,必須例項化介面的實現類,如list型別集合中,arraylist類繼承了list介面,可以直接例項化。

collection介面中,操作集合的方法有:

addall()——將乙個集合中的元素新增到另乙個集合中,即集合的拼接;

語法:boolean addall(collection extends e> c)引數可以是基本型別,也可以是引用類

containsall()——用於判斷當前集合是否包括給定集合中所有的元素。

語法:boolean containsall(collection extends e> c)

其核心就是乙個物件與集合中每個物件做equals方法,例如:用於員工資訊的比較

emps.add(new emp("cecilia",8000));

system.out.println(emps.contains(new emp("cecilia",8000))?"已存在":"不存在")。

輸出結果為:不存在,其中的原因在於:由於new乙個物件,即使內容相同,但是重新建立了位址,實質這就是淺拷貝的含義,因此輸出結果還是不存在。

注意:只要是自定義型別複雜物件時,就一定要重寫equals方法

自定義型別物件比較的思路:

第一步:判斷obj是否為null,如果為null,則直接返回;

第二步:判斷obj和this師傅為同一物件,如果是。則返回true;

第三步:判斷obj是否為當前型別;

第四步:最後,先型別轉換,再自定義核心比較邏輯;

例如以下查詢員工資訊的**:

boolean equals(object obj)else if(obj==this)else if(!obj instanceof emp)else}

3.操作集合的方法還有:

.size()——返回當前集合的元素總數

.clear()——清空當前集合元素

boolean isempty()——判斷當前集合是否為空

4.批量處理集合中的元素的操作方法

addall()——兩個集合的拼接,直接修改乙個集合的元素,不會建立新的集合物件

containsall()——批量判斷

retainsall()——獲得兩個集合的交集,即除去不同的元素

removeall()——獲得兩個集合的差集,即除去相同的元素(此處要注意集合a-集合b和集合b-集合a結果是不相同的)



初談CSRF攻擊

我和大家分享一下我在開發時候遇到的一些問題,以及我的解決方案。跨站請求偽造 cross siterequest forger 簡稱csrf,有時候縮寫xsrf表示,攻擊要比簡單的跨站指令碼 xss 攻擊更危險。我主要講解它的危害以及如何防禦,並不會說明如何去實現。1.威脅概述 假設乙個 允許使用者登...

初談設計模式

簡介 現在模式設計從很早之前的面相過程的原則到現在的面相物件的原則 object oriented簡稱oo 設計模式在軟體開發過程中是個必不可少的知識點。或許許多剛開始編寫 或沒有維護過產品的人很少體驗過設計模式的重要性,但是運用恰當的設計模式,能極大減少需求變更的代價和 重構的風險。大綱使用模式的...

初談指標(2)

首先我們需要理清指標與陣列的關係 陣列不等於指標,但在某些情況下二者等價。定義乙個一維陣列int a i 當我們使用a i 的時候,實際上編譯器做了轉換處理,變成了 a i 一維陣列是方便理解的,那麼二維陣列呢?a i j 與 a i j 具有等價效果,對後者分析如下 a表示二維陣列中第一行的位址,...