List和ArrayList,Map和HashMap的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List和ArrayList,Map和HashMap的区别相关的知识,希望对你有一定的参考价值。
参考技术A 一个 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="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
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)来定制你的自定义类.
JAVA中对list map根据map某个key值进行排序
package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class java_ListMapSort { public static void main(String[] args) { // TODO Auto-generated method stub List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("name", "p"); map1.put("age", "5"); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "h"); map2.put("age", "12"); Map<String, Object> map3 = new HashMap<String, Object>(); map3.put("name", "f"); map3.put("age", "31"); list.add(map1); list.add(map3); list.add(map2); //排序前 for (Map<String, Object> map : list) { System.out.println(map.get("age")); } Collections.sort(list, new Comparator<Map<String, Object>>() { public int compare(Map<String, Object> o1, Map<String, Object> o2) { Integer age1= Integer.valueOf(o1.get("age").toString()) ;//age1是从你list里面拿出来的第一个 age Integer age2= Integer.valueOf(o2.get("age").toString()) ; //age1是从你list里面拿出来的第二个age return age1.compareTo(age2); //return age2.compareTo(age1);为降序 } }); //排序后 System.out.println("-------------------"); for (Map<String, Object> map : list) { System.out.println(map.get("age")); } } }
以上是关于List和ArrayList,Map和HashMap的区别的主要内容,如果未能解决你的问题,请参考以下文章