<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    既有魚肉又有熊掌——ListOrderedMap

    要有序可以用List,要便于查找可以用Map,那既要有序又便于查找呢?

            最近我就遇到了這樣一個問題,Java沒有給我們提供現成的類,我們完全可以自己開發個類繼承List和Map(Java原來就有不可以同時繼承List和Map的Bug,因此特意去看了下這個Bug的狀態——Closed,呵呵,應該是很老的版本才有的問題,用新版本的朋友不用擔心會遇到這個問題),但是完全沒必要白花那個力氣,因為Apache的Commons Collections的Jar包里已經為我們提供了一個相當完備的類來滿足我們這樣的要求完全是綽綽有余。因此我們現在要做的僅僅是引入Jar包,然后使用這個現成的好東西——ListOrderedMap就可以啦。

             讓我們來看看代碼:

    ListOrderedMap list  =   new  ListOrderedMap();
    for ( int  i  =   0 ; i  <  objs.length; i ++ {
        list.put(objs[i].getId(), objs[i]);
    }

            初始化很簡單吧,沒有一點技術難度,往里邊放數據和Map沒一點區別,需要注意的是Map我們可以在初始化的時候加上類型,比如Map<String, String>,但是ListOrderedMap不可以,就這么點差別,要記得哦。但是這個差別也是ListOrderedMap讓人最不滿意的地方,因為這說明他是類型不安全的。

            接下來,看看我們都用到了ListOrderedMap的哪些方法:

    int  themeId  =  ((Obj) list.getValue( 0 )).getThemeId();
    int  index  =  list.indexOf(key);
    if  (index  ==  list.size()  -   1 {
        obj
    =  (Obj) list.getValue( 0 );
    }
      else   if  (index  !=   - 1 {
        obj
    =  (Obj) list.getValue(index  +   1 );
    }

            getValue(int index)直接根據Index取得Value,當然也可以直接根據Index取得Key值,方法名可不是getKey(int index),而是直接get(int index)就可以啦。接著我們想取到當前Key值后面一個Key值所對應的Value,首先用indexOf(Object key)取得Index,然后計算其后面的Index再根據此Index取值。如果想取得當前Key值后面一個Key值,則不必要先取Index,這么麻煩,ListOrderedMap里有直接的方法可以取得當前Key值的前一個Key值和后一Key值,分別是previousKey(Object key)方法和nextKey(Object key)方法,返回null值表示到頭(或尾)了,或者沒有找到和當前Key值匹配的Key值 。個至于這邊為什么要有If和Else if,原因很簡單,和一般的索引一樣,返回值是-1就表示沒有找到。我們在這里做了一個循環,而且我的這個ListOrderedMap的數列是確保長度大于0的,所以我把index==list.size()-1的判斷放在了前邊,如果不能確定長度是否大于0,還是先判斷返回值是否為-1為好。

    話說多了容易糊涂,不如來個實例實在:

        /**
         * 根據用戶賬號查找其擁有的實時視頻列表
         * 
    @param account
         * 
    @return
         
    */

        
    public List findVideoList(String account) {
                    
            List videolist 
    = new ArrayList();    
            StringBuffer sqlsb 
    = new StringBuffer("");
            sqlsb.append(
    " select username,videourl,cratedate from video v where v.customer_account ='");
            sqlsb.append(account);
            sqlsb.append(
    "");
            
    try {    
                videolist 
    = jdbcTemplate.queryForList(sqlsb.toString());            
            }
     catch (DataAccessException e) {
                
    return null;
            }

            
    return videolist;
        }

        
        
    //取list里面的每行紀錄中的username,createdate
        private void getVideoList(String account){        
            
    int i= 0;
            List list 
    = videoService.findVideoList(account);
            
    if(list!=null && list.size()>0){
                
    for(i=0;i<list.size();i++){
                    ListOrderedMap ob 
    = (ListOrderedMap)list.get(i);
                    
    if(ob!=null && ob.size()>0){                           
                        System.out.println(ob.getValue(
    0)+ob.getValue(2));                            
                    }

                }

            }

        }


     

            本文只簡單介紹了ListOrderedMap的幾種比較實用的方法,其他方法使用方法可以參考Apache網站上的相關API:http://commons.apache.org/collections/api-release/index.html

    posted on 2009-08-20 18:22 都市淘沙者 閱讀(902) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

    主站蜘蛛池模板: 亚洲日本香蕉视频| 国产成人精品日本亚洲| 亚洲人成图片网站| 24小时日本电影免费看| 亚洲一区二区在线视频| 久久久久国产精品免费网站| 亚洲人成影院在线无码按摩店| 一级做α爱过程免费视频| 亚洲AV中文无码乱人伦| 日本高清免费中文在线看| 免费少妇a级毛片| 一区二区三区免费视频播放器| 亚洲国产一区二区视频网站| 一级做受视频免费是看美女| 伊人久久大香线蕉亚洲五月天| 一个人免费观看视频在线中文| 亚洲中文字幕无码永久在线| 日本视频免费高清一本18| 久久久无码精品亚洲日韩京东传媒| 67194成手机免费观看| 亚洲国产精品久久久久秋霞影院| 国产在线观看片a免费观看| 亚洲激情校园春色| 91麻豆最新在线人成免费观看| 亚洲精品蜜夜内射| 一本色道久久综合亚洲精品高清| 91青青青国产在观免费影视| 亚洲一区欧洲一区| 亚洲午夜精品第一区二区8050| 永久免费不卡在线观看黄网站| 亚洲欧洲日本天天堂在线观看| 午夜老司机免费视频| 免费看一级一级人妻片| 久久精品国产亚洲AV果冻传媒| 一区二区无码免费视频网站| 国产青草亚洲香蕉精品久久 | 日韩欧美一区二区三区免费观看 | 一级一级一片免费高清| 亚洲成色WWW久久网站| 91香蕉视频免费| yy一级毛片免费视频|