JBOSS 點(diǎn)滴

          豐豐的博客

          List和arrayList ,Map和HashMap的區(qū)別

           

           一個(gè) List<Map>變量的內(nèi)部數(shù)據(jù)結(jié)構(gòu)

          [{F_CITY_NAME=徐州, CNT=1141}, {F_CITY_NAME=鎮(zhèn)江, CNT=577}]

          一個(gè)Map變量的內(nèi)部數(shù)據(jù)結(jié)構(gòu)

          {泰州非邊界=7, 宿遷無=26, 無錫省邊界=6, 常州非邊界=10, 淮安地市邊界=70, 南京null=21}

           


          jsp頁面中不能通過${list.size}取列表長度,而是
          <%@ taglib uri="<%@ taglib prefix="fn" uri=">
          list
          的長度是:${fn:length(list)}


          List
          是接口,List特性就是有序,會(huì)確保以一定的順序保存元素.
          ArrayList
          是它的實(shí)現(xiàn)類,是一個(gè)用數(shù)組實(shí)現(xiàn)的List.
          Map
          是接口,Map特性就是根據(jù)一個(gè)對(duì)象查找對(duì)象.
          HashMap
          是它的實(shí)現(xiàn)類,HashMaphash表實(shí)現(xiàn)的Map,就是利用對(duì)象的hashcode(hashcode()Object的方法)進(jìn)行快速散列查找.(關(guān)于散列查找,可以參看<<數(shù)據(jù)結(jié)構(gòu)>>)


          一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.
          比如:List list = new ArrayList();
          這樣做的原因是list就相當(dāng)于是一個(gè)泛型的實(shí)現(xiàn),如果想改變list的類型,只需要:
          List list = new LinkedList();//LinkedList
          也是List的實(shí)現(xiàn)類,也是ArrayList的兄弟類
          這樣,就不需要修改其它代碼,這就是接口編程的優(yōu)雅之處.
          另外的例子就是,在類的方法中,如下聲明:
          private void doMyAction(List list){}
          這樣這個(gè)方法能處理所有實(shí)現(xiàn)了List接口的類,一定程度上實(shí)現(xiàn)了泛型函數(shù).


          如果開發(fā)的時(shí)候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實(shí)現(xiàn)List,Map(或者Collection)來定制你的自定義類.

          PS:MAP是存在內(nèi)存中,所以他的讀取速度要比List快。

           

          posted on 2013-11-28 15:36 半導(dǎo)體 閱讀(196) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA語法

          主站蜘蛛池模板: 长岭县| 高陵县| 东海县| 深圳市| 濉溪县| 丽水市| 琼中| 深州市| 尉氏县| 墨竹工卡县| 东丽区| 闸北区| 北宁市| 灌云县| 黄浦区| 英超| 镇沅| 神池县| 商都县| 盘山县| 措勤县| 长沙县| 土默特右旗| 大方县| 文山县| 诸暨市| 楚雄市| 葫芦岛市| 芜湖县| 武威市| 宜昌市| 裕民县| 开平市| 南宫市| 峡江县| 黄冈市| 保康县| 贵阳市| 江川县| 防城港市| 德令哈市|