乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      [Jakarta Commons筆記](méi) Commons Collections - Map組

       moonboat 2008-11-12

      接下來(lái)看Map組。

       

      BidiMap

      MultiMap

      LazyMap

      MapUtils

       

      Commons Collectionsjava.util.Map的基礎(chǔ)上擴(kuò)展了很多接口和類,比較有代表性的是BidiMapMultiMapLazyMap。跟BagBuffer類似,Commons Collections也提供了一個(gè)MapUtils

       

      所謂BidiMap,直譯就是雙向Map,可以通過(guò)key找到value,也可以通過(guò)value找到key,這在我們?nèi)粘5拇a-名稱匹配的時(shí)候很方便:因?yàn)槲覀兂诵枰ㄟ^(guò)代碼找到名稱之外,往往也需要處理用戶輸入的名稱,然后獲取其代碼。需要注意的是BidiMap當(dāng)中不光key不能重復(fù),value也不可以。

       

      所謂MultiMap,就是說(shuō)一個(gè)key不在是簡(jiǎn)單的指向一個(gè)對(duì)象,而是一組對(duì)象,add()remove()的時(shí)候跟普通的Map無(wú)異,只是在get()時(shí)返回一個(gè)Collection,利用MultiMap,我們就可以很方便的往一個(gè)key上放數(shù)量不定的對(duì)象,也就實(shí)現(xiàn)了一對(duì)多。

       

      所謂LazyMap,意思就是這個(gè)Map中的鍵/值對(duì)一開(kāi)始并不存在,當(dāng)被調(diào)用到時(shí)才創(chuàng)建,這樣的解釋初聽(tīng)上去是不是有點(diǎn)不可思議?這樣的LazyMap有用嗎?我們這樣來(lái)理解:我們需要一個(gè)Map,但是由于創(chuàng)建成員的方法很“重”(比如數(shù)據(jù)庫(kù)訪問(wèn)),或者我們只有在調(diào)用get()時(shí)才知道如何創(chuàng)建,或者Map中出現(xiàn)的可能性很多很多,我們無(wú)法在get()之前添加所有可能出現(xiàn)的鍵/值對(duì),或者任何其它解釋得通的原因,我們覺(jué)得沒(méi)有必要去初始化一個(gè)Map而又希望它可以在必要時(shí)自動(dòng)處理數(shù)據(jù)生成的話,LazyMap就變得很有用了。

       

      我們還是通過(guò)一個(gè)具體的例子來(lái)說(shuō)明:

       

      package sean.study.commons.collections;

       

      import java.util.Date;

      import java.util.HashMap;

      import java.util.Map;

       

      import org.apache.commons.collections.BidiMap;

      import org.apache.commons.collections.Factory;

      import org.apache.commons.collections.MultiHashMap;

      import org.apache.commons.collections.MultiMap;

      import org.apache.commons.collections.bidimap.DualHashBidiMap;

      import org.apache.commons.collections.map.LazyMap;

      import org.apache.commons.lang.StringUtils;

       

      public class MapUsage {

       

          public static void main(String[] args) {

              demoBidiMap();

              demoMultiMap();

              demoLazyMap();

          }

       

          public static void demoBidiMap() {

              System.out.println(StringUtils.center(" demoBidiMap ", 40, "="));

              BidiMap bidiMap = new DualHashBidiMap();

              bidiMap.put("BJ", "Beijing");

              bidiMap.put("SH", "Shanghai");

              bidiMap.put("GZ", "Guangzhou");

              bidiMap.put("CD", "Chengdu");

              System.out.println("Key-Value: BJ = " + bidiMap.get("BJ"));

              System.out.println("Value-Key: Chengdu = " + bidiMap.getKey("Chengdu"));

              System.out.println(StringUtils.repeat("=", 40));

          }

       

          public static void demoMultiMap() {

              System.out.println(StringUtils.center(" demoMultiMap ", 40, "="));

              MultiMap multiMap = new MultiHashMap();

              multiMap.put("Sean", "C/C++");

              multiMap.put("Sean", "OO");

              multiMap.put("Sean", "Java");

              multiMap.put("Sean", ".NET");

              multiMap.remove("Sean", "C/C++");

              System.out.println("Sean's skill set: " + multiMap.get("Sean"));

              System.out.println(StringUtils.repeat("=", 40));

          }

       

          public static void demoLazyMap() {

              System.out.println(StringUtils.center(" demoLazyMap ", 40, "="));

              // borrowed from Commons Collection's Javadoc

              Factory factory = new Factory() {

                  public Object create() {

                      return new Date();

                  }

              };

              Map lazy = LazyMap.decorate(new HashMap(), factory);

              System.out.println(lazy.get("NOW"));

              System.out.println(StringUtils.repeat("=", 40));

          }

       

      }

       

      以下是運(yùn)行結(jié)果:

       

      ============= demoBidiMap ==============

      Key-Value: BJ = Beijing

      Value-Key: Chengdu = CD

      ========================================

      ============= demoMultiMap =============

      Sean's skill set: [OO, Java, .NET]

      ========================================

      ============= demoLazyMap ==============

      Wed Aug 03 12:44:56 CST 2005

      ========================================

       

      簡(jiǎn)單說(shuō)一下這個(gè)Factory,它是定義在org.apache.commons.collections包下面的一個(gè)接口,用于自定義對(duì)象的創(chuàng)建過(guò)程。這個(gè)有點(diǎn)像是后面我們要講的Transformer的簡(jiǎn)化版本,但是也更直接也很好用,至少Commons Collections通過(guò)它向開(kāi)發(fā)人員開(kāi)放了一個(gè)可以方便控制對(duì)象創(chuàng)建細(xì)節(jié)的接口。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多