1. 程式人生 > >20175234 2018-2019-2 《Java程序設計》第八周學習總結

20175234 2018-2019-2 《Java程序設計》第八周學習總結

dex question align 大小 utf distance ons enc inf

目錄

  • 20175234 2018-2019-2 《Java程序設計》第八周學習總結
    • 教材學習內容總結
      • 15.1泛型
      • 15.2鏈表
      • 15.3堆棧
      • 15.4散列映射
      • 15.5樹集
      • 15.6樹映射
      • 15.7自動裝箱與拆箱
    • 教材學習中的問題和解決過程
    • 代碼托管
    • 學習進度條
    • 參考資料

20175234 2018-2019-2 《Java程序設計》第八周學習總結

教材學習內容總結

15.1泛型

  • 泛型類聲明 Class 名稱<泛型列表>,泛型列表給出的泛型可以作為類的成員變量的類型、方法的類型以及局部變量的類型。
  • 使用泛型類聲明變量,與普通類相比,多了一對“<>”。Java泛型的主要目的:可以建立具有類型安全的數據結構,如列表散列表等。在使用這些泛類建立的數據結構時,不需要強制類型轉換,不要求進行運行時類型檢查。

15.2鏈表

  • LinkedList泛型類創建的對象以鏈表結構存儲數據,需要指明E的具體類型,如LinkedList<String>mylist=new LinkedList<String>();
    創建了一個對象必須是String類的雙向鏈表。
  • 用add添加結點,例如
mylist.add(“How”);
mylist.add(“Are”);
…
  • 常用方法
    技術分享圖片

技術分享圖片

技術分享圖片

  • 遍歷鏈表:可以用LinkedList類中的get(int index)返回當前鏈表第index個結點中的對象,也可以使用叠代器遍歷集合(找到集合中一個對象的同時,耶得到遍歷的後繼對象的引用)。由下圖可知,叠代器遍歷鏈表,更加快速。
    技術分享圖片

  • 排序與查找:Collections類提供了用於排序和查找的類方法如下:public static sort(List<E> list)按升序列,int binarySearch (List<T>list,T key,CompareTo<t> c)
    折半查找,存在返回引索位置(引索位置從0開始),不存在返回-1。
  • 洗牌與旋轉
    * public static void shuffle(List list)按洗牌算法重新隨機排列
    * static void rotate(List list ,int distance),旋轉鏈表中數據,distance取正值,向右旋轉list中數據(第一個值移到第二位,最後一位移到第一位),取負值向左旋轉list中數據。
    * public static void reverse(List list),翻轉list中數據。

15.3堆棧

  • 創建堆棧對象java.util包 Stack<E>
  • 壓棧操作public E push(E item )
  • 彈棧操作public E pop();
  • 判斷是否有數據public boolean empty();有數據返回false,無返回true。
  • 獲取堆棧頂端數據,但不刪除數據public E peek();
  • 獲取數據在堆棧中的位置,最頂端為1,向下依次累加,無則返回-1public int search(Object data);

15.4散列映射

  • 用HashMap<K,V>泛型類創建的對象稱作散列映射。
  • 常用方法(p452)
    * public void clear()
    * public Object clone()
    * public Boolean containsKey(Object key)
    * public Boolean containsValue(Object value)
    ……
  • 遍歷散列映射
  • 基於散列映射的查詢

15.5樹集

  • TreeSet創建樹集。
  • 樹集用add方法添加節點,節點會按其存放的數據的“大小”順序一層一層地依次排列,在同一層中的節點從左到右按“大小”順序遞增排列,下一層的都比上一層的小。
  • TreeSet類的常用方法
  • public boolean add(E o) 向樹集添加加節點。
  • public void clear() 刪除樹集中的所有節點。
  • public void contains(Object o) 如果樹集中有包含參數指定的對象,該方法返回true,否則返回false 。
  • public E first() 返回樹集中的第一個節點中的數據(最小的節點)。
  • public E last() 返回最後一個節點中的數據(最大的節點)。
  • public isEmpty() 判斷是否是空樹集,如果樹集不含任何節點,該方法返回true 。
  • public boolean remove(Object o) 刪除樹集中的存儲參數指定的對象的最小節點。
  • public int size() 返回樹集中節點的數目。

15.6樹映射

  • TreeMap<K,V>類實現了Map<K,V>接口,稱TreeMap<K,V>對象為樹映射。
  • public V put(K key,V value); 添加節點。

15.7自動裝箱與拆箱

  • JDK1.5新增的基本類型數據和相應的對象之間相互自動轉換的功能,稱作基本數據類型的自動裝箱與拆箱(Autoboxing and Auto-Unboxing of Primitive Types)。

教材學習中的問題和解決過程

  • 問題1:技術分享圖片

  • 問題1在cmd中嘗試運行技術分享圖片

  • 問題2:從上圖可見,出現編碼JBK的不可映射字符問題
  • 問題2解決方案:編碼JBK的不可映射字符
    使用-encoding參數指明編碼方式:javac -encoding UTF-8 XX.java技術分享圖片

    另一種思路
    技術分享圖片

代碼托管

截圖

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

參考資料

  • Java學習筆記(第8版)

  • 《Java學習筆記(第8版)》學習指導

  • 編碼JBK的不可映射字符

20175234 2018-2019-2 《Java程序設計》第八周學習總結