Welcome to Yumao′s Blog.
Hello JavaSE Day02
, 2012年03月12日 , Java Language , 评论 在〈Hello JavaSE Day02〉中留言功能已關閉 ,

Java SE Day02
====================

StringBuffer VS StringBuilder
算法基本一樣, 都是採用變長算法維護的char[], 以及對這個數組
內容進行”增刪改查”操作組成
StringBuilder java 5 以後提供,性能好,非線程安全(不檢查鎖)
StringBuffer 早期Java 提供, 性能稍差, 線程安全(檢查鎖)

線性表
散列表

3 線性表: List, 表示有先後次序的對象集合, 歌曲列表
  1 什麼是線性表: 有先後次序的對象集合
  2 java 的線性表實現原理
  3 線性表的使用


  ArrayList = Object[] + 線性表操作(增刪改查)
  StringBuilder = char[] + 操作(增刪改查)

  ArrayList(1.2以後新的) 是使用變長數組算法實現的
	List (線性表方法)
  Vector(1.0) 是使用變長數組算法實現是 List 矢量 向量

  LinkedList 是採用雙向循環鏈表實現的List 接口中定義的方法
  ArrayList 是利用變長數組算法實現的 List接口定義的方法
  它們都是List, 使用感受差不多
  LinkedList 在頭尾插入/修改速度很快, 讀取比較慢
  ArrayList 本質是數組, 讀取修改很快, 刪除較慢
  一般使用ArrayList多些

List 集合的實現
  1 LinkedList 採用雙向循環鏈表實現
  2 ArrayList 變長數組算法實現 新的 快 非線程安全
  3 Vector 變長數組算法實現 早期提供 慢 線程安全


4 線性表的應用
  貪吃蛇
  1 蛇是節點的(線性)集合,
    節點在行列坐標(i,j)的位置
  2 蛇可以走, 繼續向當前方向走一步
    也可以向指定方向走一步, 不能反向
    蛇可以吃, 一個坐標上的東西.(以後再考慮)
  3 蛇在一個面板中運行, 面板控制行列坐標
    面板可以提供文字界面的打印方法, 顯示出一條蛇
  4 重構Worm類提供檢查坐標是否在蛇身上的方法
  5 提供測試類測試蛇的面板運行.

5 Map
  1 HashMap 新
  2 Hashtable 舊 (1.2以前)


1 散列表  Map

 散列表概念
  1) 容量: 散列表中散列數組大小.
  2) 散列運算: key->散列值(散列數組下標)的算法,
  	如: "mm".hashCode()%10->8
  3) 散列桶: 	散列值相同的元素的"線性集合"
  4) 加載因子: 就是散列數組加載率, 一般小於75%性能比較理想
  	就是:元素數量/散列數組大小, 如: 7/10=70%
  5) 散列查找: 根據Key計算散列值, 根據散列值(下標)找到
    散列桶,在散列桶中順序比較Key, 如果一樣, 就返回value
  6) 散列表中Key不同, Value可以重複

2 HashMap(關鍵字:值), 關鍵字key是唯一不重複的, 查找表
 1) key可以是任何對象, Value可以任何對象,
 2) key:value 成對的放置到集合中
 3) 重複的key算一個, 重複添加是替換操作
 4) 根據key的散列值計算散列表, 元素按照散列值(不可見)排序
 5) 默認的容量: 16 默認加載因子(加載率) 0.75
 6) 根據key檢索查找value值
 7) 用於查找場合, 可以提高根據key查找效率

 8) HashMap VS Hashtable
  A HashMap 新, 非線程安全, 不檢查鎖, 快
  B Hashtable 舊 (1.2以前) 線程安全, 檢查鎖, 慢一點
  作業
  1 複習實現全部課堂案例代碼
  2 比較性能:
      a int i = 1; 重複 i=i+1
      b Integer i = 1; 重複 i=i+1;
  3 創建一個List集合, 添加多個測試數據
    使用Collections.sort() 實現排序.
    在排序結果中使用 Collections.binarySearch()
    查詢一個字符串的位置序號.
  4 測試集合HashSet 的全部方法.
    add()
    addAll();
    remove()等
  5 測試HashMap的全部方法
    put()
    get()
    remove()
    values() 等

  6 (選做)實現完整版MyArrayList.
   參考: MyArrayList

  參考: 數組版本的發牌洗牌 corejava.day06.card1.CardDemo
       集合版本的發牌洗牌 corejava.day06.card2.CardDemo
      MyArrayList 實現參考: corejava.day06.list

預習: 內部類, 異常

Code Package

课堂提纲教案

评论已关闭