map
Map 提供了一个通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。
Map底层是哈希表,哈希表的结构主要是hashCode+数组,通过hashCode对数组长度取余获得每个key的位置,由于这种存储方式,造成了map存储的key的无序性。
mybatis查询存入map
List<Map<String, Object>> list = userService.selectBySql("* from user");
<select id="selectBySql" resultType="java.util.Map">
select ${querySql}
</select>
数据库中的数据如下:
遍历数据如下:
jdbcTemplate查询存入map
List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from user");
遍历数据如下:
原因
同样是使用map进行存储,一个有序一个无序,我们打印class后可以发现。
Mybatis使用的实现类为class java.util.HashMap。
jdbcTemplate使用的实现类为LinkedCaseInsensitiveMap。
HashMap是无序的,而LinkedCaseInsensitiveMap是有序的。
结论
当我们使用map进行存储时,想要使数据保持有序,我们可以使用有序的map实现类。
如LinkedHashMap、TreeMap、LinkedCaseInsensitiveMap等。