1. 程式人生 > >集合框架 【學習筆記】

集合框架 【學習筆記】

一。 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.訪問目錄中的所有內容
  • 但是不可以:
  • 訪問檔案資料