集合框架 【學習筆記】
一。 Collection cil=new ArrayList(); // LIST 集合有序 陣列 適合查詢 Collection se=new hashSet(); // set 集合無序 連結串列 適合增刪 List: .add ()//新增元素 .isEmpty ()//檢查是否為空集合 //clear() 清空集合 //remove()刪除集合中的元素 Contains ()//判斷當前集合是否包含給定的元素 conTainsAll //判斷當前集合是否包含給定的集合中的所有元素 二。 Iterator 迭代器 /** *
- 遍歷集合
- Collection提供了統一的遍歷集合元素的
- 方式:迭代器模式
- Iterator iterator()
- 獲取用於遍歷當前集合的迭代器
- java.util.Iterator()是一個介面,規定了用於遍歷集元素的相關方法,不同的集合提供了相應的實現類。
- 無需記住那些實現類的命子,只將他們做Iterator即可。
- 遍歷集合遵循:問 取 刪的步驟,其中刪除不是必要操作
- @author apple
/ 迭代方式: 首先 物件.hasNext();//先問 然後 物件.next(); 後取 /* * boolean hasNext()問的過程 * 該方法是判斷集合中是否還有元素可以取出 * * E next()取得過程 * 獲取集合中下一個元素 */ //在迭代器遍歷集合元素的時,不要使用集的方法增刪元素,否則會引起異常
新迴圈==迭代器 新迴圈並非信譽發,新迴圈是編譯器認可,而不是虛擬機器認可 使用新迴圈遍歷集合時,編譯器會將他改為迭代器方式遍歷。所以在使用新迴圈遍歷集合時 不能通過集合的方法增刪元素。 For each(變數:陣列或集合){ //對於陣列和集合遍歷更方便 }
泛型 泛型又稱為引數化型別,是將當前類的屬性的型別 方法引數的型別以及方法返回的定義權 移交給使用者。使用者在建立當前類的同時將泛型的實際型別傳入。 SubList //擷取字串的位置
集合變陣列 toArray(【集合】) /** * 若給定的陣列可能(陣列可以存放集合的所有元素)時 * 則使用該陣列。若不可用,會自動建立一個與給定的陣列同類型的陣列 * */
/**
-
陣列轉換集合
-
需要注意,轉換隻能轉換為List集合
-
需要注意,轉換隻能轉換為List集合
-
使用的是陣列的工具類Arrays的靜態方法aslist
-
只能轉換為List集合的主要原因是:set不能存放重複元素,所以若轉換為SEt集合
-
可能丟失元素的情況
-
@author apple
-
向集合中新增一個元素 *
- 實際上下面的程式碼會丟擲異常(java.lang.UnsupportedOperationException)原因在於,該集合是由陣列轉換出來的
- ,那麼該集合就表示原來的陣列,所以對集合的操作就是對陣列的操作。那麼新增元素會導致原陣列擴容,那麼久不能
- 表示原來的陣列
- 所以不允許向該集合新增元素
-
所以得集合都提供了一個常有的Collection型別的構造方法 * 該構造方法稱為:複製構造器 * 作用是在建立當前集合的同時,集合中包含給定集合中的所有元素。 * *
-
排序集合元素
-
排序集合使用的是集合的工具類Collections的靜態方法
-
排序技能對List集合進行。因為Set部分實現類是無序的
-
@author by:Wys
*/
Collection:集合的介面 Collections 集合的工具類 Collections.sort 集合的排序
查詢表。檔案操作
比較器: /*過載sort方法要求傳入一個額外的比較器該方法不在要求集合元素必須實現Comparable介面,並且也不再 * 使用集合元素自身的比較規則排序了,而是給定的這個額外的比較器的比較規則對集合元素進行排序。 * 實際開發中也推薦使用這中方式排序集合元素,若集合元素是自定義的 * 建立比較器也推薦使用匿名內部類的方式 * * */
佇列: Queue quenu=new LinkedList(); /** boolean offer(E e) *入隊操作,向隊尾追加一個新元素 * */ ,offer()進隊元素 。poll()出隊元素E poll() * 出隊操作,從對首獲取元素,獲取後該元素就從佇列中被刪除了 E peek(); 引用元素 但是不會出隊
棧 /**
- 棧
- 儲存一組元素,但是存取元素必須遵循先進後出的原則
- 通常為了實現後退這類功能的
- java.util.deque * 雙端佇列,兩端都可以進隊 * 當只調用從一段進出隊操作時,就形成了棧結構 * 因此,雙端佇列為棧提供了兩個方法: * push ,pop
Map:(表)
-
java.util.Map
-
Map看起來像是一個多行兩列的表格
-
以Key-Value對的形式存放元素
-
在Map中Key不允許重複(重複是依靠Key的eQuals判斷)
-
常用的實現類 hashMap
-
TreeMAP
/** * V put(K k,V v) * 將給定的Key-value 對存入Map * */
-
V put(K k,V v) 增加 * 將給定的Key-value 對存入Map * 由於Map要求Key不允許重複,所以使用Map * 已有的Key存入一個新的Value時的操作是替換value,那麼返回值為該Key原有對應的Value * ,那麼返回值為該Key原來對應的Value。若是一個新的Key,則返回當前新的值
/**
- get(K k)
- 根據給定的key獲取對應的Value,若當前Map中沒有給定的Key,則返回值為Noll
/ /*
- V remove(K k) 刪除
- 刪除給定的Key所對應額Key-value對
- 返回值為被刪除的Key-value對中的Value。
*/ 1 * 遍歷所以得Key 遍歷
-
Setkeyset() *該方法會將當前的Map中所有的Key存入一個Set集合返回。那麼遍歷該集合就等於遍歷所有KEY
* 遍歷每一組鍵值對 * Map中每一組鍵值對都是有Map的內部類: * java.util.Map.Entry的一個實列表示的。 * Entry有兩個方法:getKey,getValue,可以分別獲取這一組鍵值對中的Key與Value * * set<Entry>entrySet該方法將Mao中每一組鍵值對(Entry實列) * * */
Hashcode<>
- 當一個類的實列作為Map的kEY時,它的equals方法與hashcode方法的重寫直接影響著散列表(Hashcode)
- 的查詢功能
- 在API文件中Object對這兩個方法的重寫做了說明:當我們重寫一個類的Equals方法時,就應該連同重寫hashcode方法
- 著兩個方法的重寫應當遵循:
- 1.一致性,當兩個物件equals比較為true時,hashcode方法返回的數字必須相等。反過來雖然不是必須的,但也應當遵循,否則在Hash
- code方法返回的數字必須相等。反過來雖然不是必須的,但也應當遵循,否則在hashcMap中會形成連結串列查詢效能
- 2穩定性。hashcode的方法對此呼叫後返回的數字應當相同,不應是一個變化的值,除非equuals比較的屬性值發生了變化
File
- java.io.File
- File的每一個實列可以表示檔案系統中的一個檔案或目錄
- 使用File可以:
- 1.訪問檔案或目錄的屬性(如:大小,名字,修改時間)
- 2操作檔案或目錄(建立,刪除檔案和目錄)
- 2.訪問目錄中的所有內容
- 但是不可以:
- 訪問檔案資料