HashMap<String, String>map = new HashMap<String, String>()
map.put("name", "test")
map.put("age", "20")
看完这段代码,很多人都会觉得这么写太啰嗦了,文艺青年一般这么来了:
HashMap<String, String>map = new HashMap<String, String>() {
{
map.put("name", "test")
map.put("age", "20")
}
}
1、面向接口(DAO)编程,接口的实现。
构建User.java实体类,构建UserImpl.java类,实现UserDao接口,构建MapDal.java,模拟数据库,Main.java模拟UI,UI只调用UserImpl,UserImpl调用MapDal。
main.java
package baidu.zhidao
import java.util.*
/**
* Main 主方法
* @author bufei
*
*/
public class Main {
public static void main(String[] args) {
int userNum = 9
// 定义UserList
List<User> list = new ArrayList<User>()
for (int i = 0 i < userNum i++) {
User user = new User()
user.setPassWord("passWord" + i)
user.setUserName("userName" + i)
list.add(user)
}
// 实例化UserImpl
UserImpl userImpl = new UserImpl(list)
String userName = "张三"
String passWord = "passWord"
User user = new User()
user.setUserName(userName)
user.setPassWord(passWord)
System.out.println("- - - baiduDemo - - -")
// 1、isExist(user)
System.out.println("查找用户 " + userName + "...")
if (userImpl.isExist(user)) {
System.out.println(userName + " 存在!")
} else {
System.out.println(userName + " 不存在!")
}
// 2、addUser
System.out.println("添加用户 " + userName + ",psw= " + passWord + " ...")
userImpl.addUser(user)
// 3、changePassword(userName)
System.out.println("修改密码...")
passWord = "zhangsanpasword"
if (userImpl.changePassword(userName, passWord)) {
System.out.println("修改成功!")
} else {
System.out.println("用户不存在!")
}
// 4 selectAll()
list = userImpl.selectAll()
System.out.println("获取全部User:")
for (User userItem : list) {
System.out.println(userItem.getUserName() + "," + userItem.getPassWord())
}
}
}
UserImpl.java
package baidu.zhidao
import java.util.*
/**
* UserDao接口实现
* @author bufei
*
*/
public class UserImpl implements UserDao {
private MapDal mapDal
/**
* 构造器,初始化Map数据库
*/
public UserImpl(List<User> list) {
mapDal = new MapDal(list)
}
/**
* 1.判断某个user是否存在
* @param user 用户对象
* @return 返回true/false用户是否存在
*/
public boolean isExist(User user) {
boolean rs = false
rs = mapDal.isExist(user)
return rs
}
/**
* 2.添加User
* 题目所给void 返回类型不合理
* @param user
*
* */
public void addUser(User user) {
if (mapDal.addUser(user)) {
System.out.println("添加完成!")
} else {
System.out.println("添加失败!")
}
}
/**
* 3.根据username修改password
* @param username
* @param password
* @return 成功与否
* */
public boolean changePassword(String userName, String password) {
boolean rs = false
User user = new User()
user.setUserName(userName)
user.setPassWord(password)
rs = mapDal.changePassword(user)
return rs
}
/**
* 根据用户对象修改密码
* @param user
* @return
*/
public boolean changePassword(User user) {
return mapDal.changePassword(user)
}
/**
* 4.得到所有的User,用List封装
* @return 从数据库查询到所有的User
* */
public List<User> selectAll() {
return mapDal.selectAll()
}
}
MapDal.java
package baidu.zhidao
import java.util.*
/**
* MapDml 用map模拟数据库,初始化生成一些User
* 单例模式,避免数据不同步
* @author bufei
*
*/
public class MapDal {
/** list中存map,实在绕得很,直接存User也是可以 */
public static List<Map<String, String>> userMapList = new ArrayList<Map<String, String>>()
/**
* 初始化,有参构造器
* 构造Map map,存储全部的userName,passWord,模拟数据库
*
*/
public MapDal(List<User> list) {
for (User user : list) {
Map userMap = new HashMap<String, String>()
userMap.put(user.getUserName(), user.getPassWord())
userMapList.add(userMap)
}
}
/**
* 无参构造器
* */
public MapDal() {
}
/**
*
* @param user
* @return
*/
public boolean isExist(User user) {
boolean rs = false
//遍历userMapList 查找用户是否存在
for (Map<String, String> map : userMapList) {
// 找到该map
if (map.get(user.getUserName()) != null) {
rs = true
}
}
return rs
}
/**
* addUser,userName已存在则无法加入
* @param user
* @return boolean
*/
public boolean addUser(User user) {
boolean rs = false
//遍历userMapList 查找用户是否存在
for (Map<String, String> map : userMapList) {
// 找到该map,已经存在,无法添加
if (map.get(user.getUserName()) != null) {
return rs
}
}
if (!rs) {
Map<String, String> userMap = new HashMap<String, String>(8)
userMap.put(user.getUserName(), user.getPassWord())
userMapList.add(userMap)
rs = true
}
return rs
}
/**
* deleteUser
* @return
*/
public boolean deleteUser() {
boolean rs = false
return rs
}
/**
* changePassword
* @param user
* @return
*/
public boolean changePassword(User user) {
boolean rs = false
// 定义遍历索引
int i = 0
//遍历userMapList 查找用户是否存在
for (Map<String, String> map : userMapList) {
// 找到该map,remove,再次存入新的
if (map.get(user.getUserName())!=null) {
userMapList.remove(i)
//hashmap 初试默认值 0.75-16
Map userMap = new HashMap<String, String>(8)
userMap.put(user.getUserName(), user.getPassWord())
userMapList.add(userMap)
rs = true
}
i++
}
return rs
}
/**
* selectAll()
*
* @return 返回全体user
*/
public List<User> selectAll() {
List<User> list = new ArrayList<User>()
//遍历map
for (Map<String, String> userMap : userMapList) {
User user = new User()
//map访问需要使用Map.Entry<>
//entry 需要Set.iterator().next()
Set entriSet = userMap.entrySet()
Iterator<Map.Entry<String, String>> iterator = entriSet.iterator()
if (iterator.hasNext()) {
// 此时entry 是 Object
Map.Entry<String, String> entry = iterator.next()
user.setUserName(entry.getKey().toString())
user.setPassWord(entry.getValue().toString())
list.add(user)
}
}
return list
}
}
2、运行效果