posts - 51, comments - 17, trackbacks - 0, articles - 9
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          Historical Collection Classes(JDK1.1 之前)
          提供的容器有Arrays,Vector,Stack,Hashtable,Properties,BitSet。其中定義出一種走訪群集內各元素的標準方式,稱為Enumeration(列舉器)接口,用法如下:
          Vector v=new Vector();
          for (Enumeration enum =v.elements(); enum.hasMoreElements();) {
          Object o 
          = enum.nextElement();
          processObject(o);
          }

          而在JDK1.2版本中引入了Iterator接口,新版本的集合對象(HashSet,HashMap,WeakHeahMap,ArrayList,TreeSet,TreeMap, LinkedList)是通過Iterator接口訪問集合元素的。
          例如:
          List list=new ArrayList();
          for(Iterator it=list.iterator();it.hasNext();)
          {
              System.out.println(it.next());
          }

          這樣,如果將老版本的程序運行在新的Java編譯器上就會出錯。因為List接口中已經沒有elements(),而只有iterator()了。那么如何可以使老版本的程序運行在新的Java編譯器上呢?如果不加修改,是肯定不行的,但是修改要遵循“開-閉”原則。
          這時候我想到了Java設計模式中的適配器模式。


          package net.blogjava.lzqdiy;

          import java.util.ArrayList;
          import java.util.Enumeration;
          import java.util.Iterator;
          import java.util.List;

          public class NewEnumeration implements Enumeration
          {

              Iterator it;
              
          public NewEnumeration(Iterator it)
              
          {
                  
          this.it=it;
                  
          // TODO Auto-generated constructor stub
              }


              
          public boolean hasMoreElements()
              
          {
                  
          // TODO Auto-generated method stub
                  return it.hasNext();
              }


              
          public Object nextElement()
              
          {
                  
          // TODO Auto-generated method stub
                  return it.next();
              }

              
          public static void main(String[] args)
              
          {
                  List list
          =new ArrayList();
                  list.add(
          "a");
                  list.add(
          "b");
                  list.add(
          "C");
                  
          for(Enumeration e=new NewEnumeration(list.iterator());e.hasMoreElements();)
                  
          {
                      System.out.println(e.nextElement());
                  }

              }

          }

          NewEnumeration是一個適配器類,通過它實現了從Iterator接口到Enumeration接口的適配,這樣我們就可以使用老版本的代碼來使用新的集合對象了。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 视频| 子洲县| 驻马店市| 温宿县| 梧州市| 高尔夫| 花垣县| 图片| 阆中市| 山阳县| 西乡县| 密云县| 伊金霍洛旗| 宿州市| 光山县| 桐庐县| 桂平市| 临清市| 邵武市| 七台河市| 桐城市| 镶黄旗| 三穗县| 定南县| 阿克苏市| 库尔勒市| 随州市| 汾阳市| 德保县| 清原| 怀宁县| 江川县| 太谷县| 长沙县| 涞水县| 瑞安市| 汝南县| 淮阳县| 宣威市| 陆丰市| 阳春市|