List和Map区别:
List:存储单列数据的集合,存储的数据是有序并且是可以重复的
Map:存储双列数据的集合,
通过键值对存储数据,存储的数据是无序的,Key值不能重复,value值可以重复
Mysql数据库(存储形式):
Mysql转Map:
1.先用getMetaData()-获得表结构
ResultSetMetaData rsmd = rs.getMetaData();//获得表结构
2.put(colName, s)-将*标题colName与*返回值s相关联,并存到Map中
Map<String, String> m = new HashMap<String, String>();
/*
* getColumnCount()字段数 表名字
* getColumnLabel()获取用于打印输出和显示的指定列的建议标题。
*/
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String colName = rsmd.getColumnLabel(i);
System.out.println("colName:"+colName);
String s = rs.getString(colName);
System.out.println("s:"+s);
if (s != null) {
m.put(colName, s);//将*标题colName与*返回值s相关联,并存到Map中
}
}
表储存形式:
HashMap储存形式:
Map转List:
new含有Map类型的List,把Map-add()即可
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
list.add(m);//m是Map数据
List储存形式:
list:[{password=123, address=0, ident=1, telephone=0, id=1, username=admin}, {password=1234, address=大连东软信息学院A3座117室是发送到发, ident=0, telephone=041184835202, id=2, username=user1}, {password=1234, address=大连理工大学计算机系, ident=0, telephone=041184835207, id=3, username=user2}]
List转Map:
注:只能转换List中一个{}
Map<String, String> m = null;
List<Map<String, String>> l = getList(sql, params);//[{password=123, address=0, ident=1, telephone=0, id=1, username=admin},...]
if (l != null && l.size() != 0) {
m = (Map<String, String>) (l.get(0));//{password=123, address=0, ident=1, telephone=0, id=1, username=admin}
}
Map储存形式:
个人总结:
List存储多个用户的数据,Map只能存储一个用户的数据
List适合用在Mysql查询全部。
Map适合用在Mysql查询单一用户,例如用户登录。
list:[{password=123, address=0, ident=1, telephone=0, id=1, username=admin}, {password=1234, address=大连东软信息学院A3座117室是发送到发, ident=0, telephone=041184835202, id=2, username=user1}]
Map:{password=123, address=0, ident=1, telephone=0, id=1, username=admin}
测试源码:
参考文献: