一個 List<Map>變量的內(nèi)部數(shù)據(jù)結(jié)構(gòu)
[{F_CITY_NAME=徐州, CNT=1141}, {F_CITY_NAME=鎮(zhèn)江, CNT=577}]
一個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特性就是有序,會確保以一定的順序保存元素.
ArrayList是它的實現(xiàn)類,是一個用數(shù)組實現(xiàn)的List.
Map是接口,Map特性就是根據(jù)一個對象查找對象.
HashMap是它的實現(xiàn)類,HashMap用hash表實現(xiàn)的Map,就是利用對象的hashcode(hashcode()是Object的方法)進行快速散列查找.(關(guān)于散列查找,可以參看<<數(shù)據(jù)結(jié)構(gòu)>>)
一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.
比如:List list = new ArrayList();
這樣做的原因是list就相當(dāng)于是一個泛型的實現(xiàn),如果想改變list的類型,只需要:
List list = new LinkedList();//LinkedList也是List的實現(xiàn)類,也是ArrayList的兄弟類
這樣,就不需要修改其它代碼,這就是接口編程的優(yōu)雅之處.
另外的例子就是,在類的方法中,如下聲明:
private void doMyAction(List list){}
這樣這個方法能處理所有實現(xiàn)了List接口的類,一定程度上實現(xiàn)了泛型函數(shù).
如果開發(fā)的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現(xiàn)List,Map(或者Collection)來定制你的自定義類.
PS:MAP是存在內(nèi)存中,所以他的讀取速度要比List快。