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

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

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

    Dict.CN 在線詞典, 英語(yǔ)學(xué)習(xí), 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統(tǒng)計(jì)

    留言簿(23)

    積分與排名

    優(yōu)秀學(xué)習(xí)網(wǎng)站

    友情連接

    閱讀排行榜

    評(píng)論排行榜

    既有魚(yú)肉又有熊掌——ListOrderedMap

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

            最近我就遇到了這樣一個(gè)問(wèn)題,Java沒(méi)有給我們提供現(xiàn)成的類(lèi),我們完全可以自己開(kāi)發(fā)個(gè)類(lèi)繼承List和Map(Java原來(lái)就有不可以同時(shí)繼承List和Map的Bug,因此特意去看了下這個(gè)Bug的狀態(tài)——Closed,呵呵,應(yīng)該是很老的版本才有的問(wèn)題,用新版本的朋友不用擔(dān)心會(huì)遇到這個(gè)問(wèn)題),但是完全沒(méi)必要白花那個(gè)力氣,因?yàn)锳pache的Commons Collections的Jar包里已經(jīng)為我們提供了一個(gè)相當(dāng)完備的類(lèi)來(lái)滿(mǎn)足我們這樣的要求完全是綽綽有余。因此我們現(xiàn)在要做的僅僅是引入Jar包,然后使用這個(gè)現(xiàn)成的好東西——ListOrderedMap就可以啦。

             讓我們來(lái)看看代碼:

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

            初始化很簡(jiǎn)單吧,沒(méi)有一點(diǎn)技術(shù)難度,往里邊放數(shù)據(jù)和Map沒(méi)一點(diǎn)區(qū)別,需要注意的是Map我們可以在初始化的時(shí)候加上類(lèi)型,比如Map<String, String>,但是ListOrderedMap不可以,就這么點(diǎn)差別,要記得哦。但是這個(gè)差別也是ListOrderedMap讓人最不滿(mǎn)意的地方,因?yàn)檫@說(shuō)明他是類(lèi)型不安全的。

            接下來(lái),看看我們都用到了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)直接根據(jù)Index取得Value,當(dāng)然也可以直接根據(jù)Index取得Key值,方法名可不是getKey(int index),而是直接get(int index)就可以啦。接著我們想取到當(dāng)前Key值后面一個(gè)Key值所對(duì)應(yīng)的Value,首先用indexOf(Object key)取得Index,然后計(jì)算其后面的Index再根據(jù)此Index取值。如果想取得當(dāng)前Key值后面一個(gè)Key值,則不必要先取Index,這么麻煩,ListOrderedMap里有直接的方法可以取得當(dāng)前Key值的前一個(gè)Key值和后一Key值,分別是previousKey(Object key)方法和nextKey(Object key)方法,返回null值表示到頭(或尾)了,或者沒(méi)有找到和當(dāng)前Key值匹配的Key值 。個(gè)至于這邊為什么要有If和Else if,原因很簡(jiǎn)單,和一般的索引一樣,返回值是-1就表示沒(méi)有找到。我們?cè)谶@里做了一個(gè)循環(huán),而且我的這個(gè)ListOrderedMap的數(shù)列是確保長(zhǎng)度大于0的,所以我把index==list.size()-1的判斷放在了前邊,如果不能確定長(zhǎng)度是否大于0,還是先判斷返回值是否為-1為好。

    話說(shuō)多了容易糊涂,不如來(lái)個(gè)實(shí)例實(shí)在:

        /**
         * 根據(jù)用戶(hù)賬號(hào)查找其擁有的實(shí)時(shí)視頻列表
         * 
    @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里面的每行紀(jì)錄中的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));                            
                    }

                }

            }

        }


     

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

    posted on 2009-08-20 18:22 都市淘沙者 閱讀(913) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java Basic/Lucene/開(kāi)源資料

    主站蜘蛛池模板: 亚洲AV无码久久精品狠狠爱浪潮 | 亚洲一本大道无码av天堂| 亚洲冬月枫中文字幕在线看| 久久久久久久99精品免费| 久久国产亚洲电影天堂| 成人无码WWW免费视频| 久久精品亚洲中文字幕无码网站| 国产免费AV片在线观看| 亚洲电影一区二区| 最近中文字幕无免费| 亚洲欧洲另类春色校园小说| 黄+色+性+人免费| 亚洲日韩AV一区二区三区四区| 日本最新免费不卡二区在线| 精品国产_亚洲人成在线| 亚洲天堂免费在线视频| 最近国语视频在线观看免费播放| 日本亚洲成高清一区二区三区| 曰批全过程免费视频在线观看无码 | 免费在线观看中文字幕| 国产国产成年年人免费看片| 色婷婷亚洲一区二区三区| 亚洲无码精品浪潮| 免费无码又爽又刺激高潮软件| 亚洲综合一区二区| 国产精品视_精品国产免费| 一区二区三区免费在线视频 | 久久亚洲精品高潮综合色a片| 免费大片黄手机在线观看| 两个人看的www视频免费完整版| 亚洲AV日韩AV永久无码绿巨人| 性xxxxx免费视频播放| 色www免费视频| 亚洲AV无码不卡在线播放| 韩国免费一级成人毛片| 日本高清免费中文在线看| 亚洲国产精品线在线观看| 日本高清免费不卡视频| 免费91最新地址永久入口| 亚洲色成人WWW永久在线观看| aⅴ免费在线观看|