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接口的適配,這樣我們就可以使用老版本的代碼來使用新的集合對象了。

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


          網站導航:
           
          主站蜘蛛池模板: 高唐县| 富裕县| 邹城市| 朝阳市| 海淀区| 谢通门县| 韶关市| 昌平区| 林甸县| 昭通市| 平定县| 三门县| 韶关市| 祁阳县| 兴山县| 郸城县| 丰顺县| 蕉岭县| 老河口市| 南平市| 磴口县| 新疆| 长岭县| 龙井市| 曲松县| 威海市| 格尔木市| 怀集县| 卢龙县| 永新县| 喀什市| 嘉兴市| 隆德县| 大宁县| 澄迈县| 商洛市| 囊谦县| 山阴县| 卢湾区| 北票市| 白城市|