一個 List<Map>變量的內部數據結構
[{F_CITY_NAME=徐州, CNT=1141}, {F_CITY_NAME=鎮江, CNT=577}]
一個Map變量的內部數據結構
{泰州非邊界=7, 宿遷無=26, 無錫省邊界=6, 常州非邊界=10, 淮安地市邊界=70, 南京null=21}
在jsp頁面中不能通過${list.size}取列表長度,而是
<%@ taglib uri="<%@ taglib prefix="fn" uri=">
list的長度是:${fn:length(list)}
List是接口,List特性就是有序,會確保以一定的順序保存元素.
ArrayList是它的實現類,是一個用數組實現的List.
Map是接口,Map特性就是根據一個對象查找對象.
HashMap是它的實現類,HashMap用hash表實現的Map,就是利用對象的hashcode(hashcode()是Object的方法)進行快速散列查找.(關于散列查找,可以參看<<數據結構>>)
一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.
比如:List list = new ArrayList();
這樣做的原因是list就相當于是一個泛型的實現,如果想改變list的類型,只需要:
List list = new LinkedList();//LinkedList也是List的實現類,也是ArrayList的兄弟類
這樣,就不需要修改其它代碼,這就是接口編程的優雅之處.
另外的例子就是,在類的方法中,如下聲明:
private void doMyAction(List list){}
這樣這個方法能處理所有實現了List接口的類,一定程度上實現了泛型函數.
如果開發的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現List,Map(或者Collection)來定制你的自定義類.
PS:MAP是存在內存中,所以他的讀取速度要比List快。