1、map的遍历有两种方法,一种是keySet,另一种是entrySet,如下:
//方法一
Set<String> set = map.keySet();
for (String s:set) {
System.out.println(s+","+map.get(s));
}
//方法二
Set<Map.Entry<String, String>> entryseSet=map.entrySet();
for (Map.Entry<String, String> entry:entryseSet) {
System.out.println(entry.getKey()+","+entry.getValue());
}
在遍历的数据较少时,两者没有什么区别,但是数据较多时方法二要比方法一的效率要高,所以以后写程序开发的时候,这点小细节还是要注意的。
2、这周在做项目的时候需要联合查询表数据,比如获取用户添加和未添加的软件,虽然不难,但是学到了另外一种思路就是在使用sql语句进行查询的时候可以自动产生一列,我的项目中是根据当前登录用户的编号查询该用户添加和未添加的桌面软件,可以通过一下两种方式实现:
(1)select * from (select * from tb_software where state=2) a left join tb_user_software u on a.software_id = u.software_id and u.user_id=1;
(2)
select * from (select CONCAT("yes") as is_add,software_id,software_name,picture_name,bhri,remark from tb_software where state = 2 and software_id in(select software_id from tb_user_software where user_id=1)
union
select CONCAT("no") as is_add,software_id,software_name,picture_name,bhri,remark from tb_software where state = 2 and software_id not in(select software_id from tb_user_software where user_id=1)
) as t
第一句是根据用户编号判断是否软件已添加,而第二句是查询时便多产生一列,可以直接读取结果。