《java程序設計》第八週學習總結

教材學習內容總結

泛型類
- 泛型(Generics)是在JDK1.5中推出的,其主要目的是能夠創建具備類型安全的集合框架
- 可使用「class 名稱 <泛型列表> 」聲明一個泛型類,泛型列表中能夠是任何接口或對象,但不能是基本數據類型
- 泛型類聲明和建立對象時,類名後多了一對「<>」,並且必需要用具體的類型替換「<>」中的泛型
- 泛型類中的泛型變量bottom只能調用Object類中的方法
- 使用泛型類創建的數據結構時,沒必要進行強制類型轉換,在運行時不要求進行類型檢查,使代碼更安全 java

鏈表
- 鏈表是由若干個稱做節點的對象組成的一種數據結構,每一個節點含有一個數據和下一個節點的引用
- 在java中使用LinkedList泛型類來建立以鏈表結構存儲數據的對象
- 鏈表使用add方法等經常使用方法對進行操做結點
- 結點是自動連接在一塊兒的
- 鏈表對象可使用iterator()方法獲取一個Iterator對象,該對象就是針對當前鏈表的迭代器
- java也提供了順序結構的動態數組表類ArrayList,數組表不適合動態地改變它存儲的數據,但數組表得到第n個單元中的數據的速度要比鏈表得到第n個單元中的數據快
- 經過Collection類咱們還能夠將鏈表中的數據從新隨機排列以及旋轉git

LinkedList泛型類
- LinkedList泛型類建立的對象以鏈表結構存儲數據,習慣上稱LinkedList類建立的對象爲鏈表對象
- 經常使用方法:
LinkedList<E> 泛型類實現 Lis<E> 泛型接口中的一些經常使用方法:算法

public boolean add(E element) //向鏈表末尾添加一個新的節點,該節點中的數據是參數elememt指定的數據。
public void add(int index ,E element)// 向鏈表的指定位置添加一個新的節點,該節點中的數據是參數elememt指定的數據。
public void clear()// 刪除鏈表的全部節點,使當前鏈表成爲空鏈表。
public E remove(int index) //刪除指定位置上的節點。
public boolean remove(E element)// 刪除首次出現含有數據elemen的節點。
public E get(int index) //獲得鏈表中指定位置處節點中的數據。
LinkedList<E>泛型類自己新增長的一些經常使用方法:
public void addFirst(E element) //向鏈表的頭添加新節點,該節點中的數據是參數elememt指定的數據。
public void addLast(E element)// 向鏈表的末尾添加新節點,該節點中的數據是參數elememt指定的數據。
public E getFirst() //獲得鏈表中第一個節點中的數據。
public E getLast() //獲得鏈表中最後一個節點中的數據。
public E removeFirst() //刪除第一個節點,並返回這個節點中的數據。

洗牌與旋轉
- Collections類還提供了將鏈表中的數據從新隨機排列的類方法以及旋轉鏈表中數據的類方法:數組

public static void shuffle(List<E> list)// 將list中的數據按洗牌算法從新隨機排列。
static void rotate(List<E> list, int distance) //旋轉鏈表中的數據。
public static void reverse(List<E> list) //翻轉list中的數據。

堆棧
- 堆棧是一種「後進先出」的數據結構,只能在一端進行輸入或輸出數據的操做
- 使用Stack泛型類建立一個堆棧對象
- 使用push、pop、empty、peek、search等方法對棧進行操做或查看棧的狀態
...安全

tack<E>//泛型類建立一個堆棧對象,堆棧對象經常使用方法
public E push(E item);//實現壓棧操做
public E pop();//實現彈棧操做
public boolean empty();//判斷堆棧是否還有數據
public E peek();//獲取堆棧頂端的數據,但不刪除該數據
public int search(Object data);//獲取數據在堆棧中的位置

散列映射
- HashMap<K,V>對象採用散列表這種數據結構存儲數據,習慣上稱HashMap<K,V>對象爲散列映射
- 可使用put、clear、clone等方法對散列進行操做
- 將values方法返回一個實現Colletion接口類建立的對象,可使用接口回調技術,即將該對象的引用賦值給Collection接口變量,該接口變量能夠回調iterator()方法獲取一個Itertaor對象,這個I
- lterator對象存放散列映射中全部鍵/值對中的值
...數據結構

經常使用方法:
public void clear()// 清空散列映射
public Object clone()// 返回當前散列映射的一個克隆
public boolean containsKey(Object key)// 若是散列映射有「鍵/值」對使用了參數指定的鍵,方法返回true,不然返回false
public boolean containsValue(Object value)// 若是散列映射有「鍵/值」對的值是參數指定的值
public V get(Object key)// 返回散列映射中使用key作鍵的「鍵/值」對中的值
public boolean isEmpty() //若是散列映射不含任何「鍵/值」對,方法返回true,不然返回false
public V remove(Object key)// 刪除散列映射中鍵爲參數指定的「鍵/值」對,並返回鍵對應的值
public int size() //返回散列映射的大小,即散列映射中「鍵/值」對的數目

樹集
- TreeSet類建立的對象稱做樹集
- 在樹集中,同一層中的結點從左到右按:大小順序遞增,從上到下遞增
- 在插入樹集的結點前要在建立對象的類中實現Comparable接口
- 樹映射是一種特殊的樹,樹映射的結點存儲關鍵字/值對
...框架

自動裝箱與拆箱
- 自動裝箱:程序容許把一個基本數據類型添加到相似鏈表等數據結構中,系統會自動完成基本類型到相應對象的轉換
- 自動拆箱:即自動裝箱逆過程學習

代碼調試中的問題和解決過程:

問題1:編譯程序時顯示使用了不安全的操做。
問題1解決方案:書上已經說明這是因爲JDK1.5後的編譯器會在使用舊版本的LinkedList類時給出警告信息,忽略該信息直接運行便可。使用javac -Xlint:unchecked Example15_4.java命令對代碼進行編譯
上傳碼雲調試

代碼託管

相關文章
相關標籤/搜索