首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

20天jvava(十)

2012-10-31 
20天jvava(10)corejava day05- ArrayList类、HashMap类、迭代器2011/07/281.

20天jvava(10)
corejava day05
    - ArrayList类、HashMap类、迭代器
2011/07/28
==============================
1.线性表
  1)什么是线性表?
            线性表是一种元素之间有先后次序的集合,
            元素的次序由序号(index)表示,在软件开发中使用广泛,如商品列表。
        数组和线性表的区别:
     a.数组的大小是固定的,而线性表的大小是不固定的
     b.数组只能存放相同类型的元素,而线性表存储元素的类型可以不同
  2)线性表的功能
     a. 集合属性:int size()
                boolean isEmpty()
     b. 添加元素    void add(Object obj)
                void add(int index,Object obj)
     c. 删除元素   void remove(int index)
                 void clear()
     d. 修改元素  void set(int index,Object obj)
     e. 查询: Object get(int index)
              boolean contains(Object obj)
              int indexOf(Object obj)
              int lastIndexOf(Object obj)
     f. 转换为数组:Object[] toArray()
       编写自定义线性表接口MyList和实现类MyArrayList,
    实现类MyArrayList=线性数据Object[]+操作实现。
      
3) JDK中线性表接口:java.util.List
                数组转换为线性表:List Arrays.asList(Object[] obj)
4) JDK中线性表的实现类:
     a.ArrayList: 数组列表,数组实现的线性表,
                                  非线程安全,Java 1.2以后提供,
                                  数组容量采用50%的方式增长,性能较Vector快
     b.Vector:向量,数组实现的线性表,线程安全,
                                  数组容量采用成倍的方式增长。
     c.LinkedList:链表,采用双向循环链表
                          实现的线性表。
    使用数组实现的线性表,
             在元素较多时不适合对元素进行插入和删除操作
             ,此时应该选择LinkedList
2.散列表
  1)什么是散列表?
            散列表通过键值对(key:value)存储元素的数据,
    key不可以重复, Value可以重复, 无序存储。
              实际应用:购物车
  2)JDK中散列表的接口:java.util.Map
    Map的方法:
属性: size(), isEmpty()
添加元素: put(key, value)
删除元素: remove(key), clear()
更新元素: put(key, value)
查询元素: get(key),
       containsKey(key),
       containsValue(value)
全部查询: keySet() - 返回key的集合
        values() - 返回value的集合
        entrySet() - 返回Set集合,集合的元素是key/value
  3)JDK中散列表的实现类
    a.HashMap类
               构造方法:
        HashMap() 默认, 初始容量 (16)
                                                       加载因子 (0.75)
                     加载因子是指元素个数和容量之间的一个比率(<1),
                    当这个比率接近加载因子时,散列表就要扩充容量                                                                               
HashMap(int initialCapacity) 指定初始容量和默认加载因子 (0.75)
HashMap(int initialCapacity,
        float loadFactor) 指定初始容量和加载因子
HashMap(Map map) 创建副本
    b.Hashtable类 
HashMap与 Hashtable的比较:
HashMap 新, 非线程安全, 性能好
Hashtable 旧 (1.2以前) ,
                           线程安全, 性能稍差

3.迭代器
   1)什么是迭代器: 对集合进行遍历操作,如: 逐一播放歌曲, 发牌操作等.
   2)java 接口 java.util.Iterator(迭代器) 用于遍历集合
     Iterator接口的方法:
        boolean hasNext();//检查是否有下一个元素
        Object next(); //返回下一个元素
        void remove(); //删除当前元素
       
a. Iterator 描述了一个顺序结构,
   并且有一个游标 概念, 游标默认在第一个元素之前.
b. 调用方法 hasNext()
            可以检查游标是否有下一个元素.
c. 使用next() 方法移动游标,
                并且返回当前游标指向的元素.
    这两个方法经常与while循环组成模式化 结构,
               用来遍历集合内容. 是常见的标准结构.
     d.凡是对集合的遍历都应采用Iterator接口实现,
              编程中十分常见.
     e. 集合在迭代期间不能调用
     集合的更新方法 add remove set 等
     f. 如果需要迭代时候删除集合内容,
      可以调用迭代器的 删除方法 remove()来 删除当前元素.

作业
  1 复习实现全部课堂案例代码
  2 编写自定义线性表接口MyList和实现类MyArrayList
  3.在课堂贪吃蛇代码的基础上,增加如下功能完成贪吃蛇游戏:
      a. 在类Worm的构造方法中随机产生6个节点Node对象,6个节点连在一起形成蛇身
      b. 提供移动蛇头的方法,蛇头碰到WormPanel面板的边界游戏结束。
     
      贪吃蛇的初始显示如下:
--------------------------------   
|                              |
|                              |
|        #                     |
|        #                     |
|        ###                   |
|          #                   |
|          #                   |
|                              |
--------------------------------
向右移动一步,显示如下:
--------------------------------
|                              |
|                              |
|        ##                    |
|        #                     |
|        ###                   |
|          #                   |
|                              |
|                              |
--------------------------------
   
      
    

热点排行