快速理解多重嵌套结构
对于多层嵌套的数据结构,需要层层分解。 以List<Map<String, Object>> 为例,首先可以看到两种结构,分别是List和Map。 可以观察到List在外层,用c语言做类比,可以看做是一个指针数组,指针数组,其实就是一个元素为指针的数组。 那么回到这个例子,List<Map<String, Object>> 不就是元素为Map的List吗?即List集合中的对象是一个Map对象,而这个Map对象的键是String类型,值是Object类型。
Map基础知识
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,map中键可以是任意类型的对象,键对象不允许重复,每个键都有一个对应的值。值对象可以重复,并且值对象还可以是 Map 类型的。
键-值对(key-value)就如同数组中的下标和值,通过通过键找值就如同下标找数组值。
Map本身是一个接口,要使用Map需要通过子类进行对象实例化。
如声明Map<String, List> map = null;
方法名称 | 说明 |
---|
get(Object key) | 返回 Map 集合中指定键对象所对应的值。 | put(K key, V value) | 向 Map 集合中添加键-值对,返回 key 以前对应的 value,如果没有, 则返回 null | remove(Object key) | 从 Map 集合中删除 key 对应的键-值对,返回 key 对应的 value,如果没有,则返回null | entrySet() | 返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry | keySet() | 返回 Map 集合中所有键对象的 Set 集合 |
HashMap map = new HashMap();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
map.put("4", "d");
map.put("5", "e");
List
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下 >标)来访问List中的元素,这类似于Java的数组。
void add(String item)
void add(String item, int index)
void remove(int position)
void remove(String item)
void removeAll()
例子
查询数据库
public List<Map<String,Object>> userList(){
String sqlSearchUserAll = "select * from t_user";
List<Map<String, Object>> list_maps = jdbcTemplate.queryForList(sqlSearchUserAll);
return list_maps;
}
List<Map<String, Object>> listMaps = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map1.put("1", "a");
map1.put("2", "b");
map1.put("3", "c");
listMaps.add(map);
|