|
@@ -0,0 +1,178 @@
|
|
|
+package com.sf.day17._02_map;
|
|
|
+
|
|
|
+import com.sf.day17._02_map.able.ILoginAble;
|
|
|
+import com.sf.day17._02_map.able.impl.LoginAbleImpl;
|
|
|
+import com.sf.day17._02_map.dt.Student;
|
|
|
+import sun.nio.ch.sctp.SctpNet;
|
|
|
+
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Scanner;
|
|
|
+
|
|
|
+/**
|
|
|
+ * create By fjl
|
|
|
+ */
|
|
|
+public class TestHashMap {
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+// method1();
|
|
|
+
|
|
|
+// method2();
|
|
|
+
|
|
|
+// method3();
|
|
|
+
|
|
|
+// method4();
|
|
|
+ method5();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void method5() {
|
|
|
+ /**
|
|
|
+ * 检查用户名是否存在
|
|
|
+ * 要求用户在控制台当中输入用户名, 如果在map 当中student 中已经存在了,就打印用户名已存在
|
|
|
+ */
|
|
|
+ //1 创建出来一个Scanner对象
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
+ //2 调用next方法 获取输入内容
|
|
|
+ System.out.println("请输入用户名:");
|
|
|
+ String username = scanner.next();
|
|
|
+// map.put(1L,new Student(1L,"zhangsan",10));
|
|
|
+// map.put(2L,new Student(2L,"lisi",10));
|
|
|
+// map.put(3L,new Student(3L,"wangwu",10));
|
|
|
+ //3 获取map的所有value Collection
|
|
|
+ Collection<Student> values = Student.map.values();
|
|
|
+ //4 遍历获取的value 集合
|
|
|
+ for(Student s: values){
|
|
|
+ //5 判断输入name 和集合当中Student.getName 是否相当如果相当就打印已存在
|
|
|
+ if(username.equals(s.getName())){
|
|
|
+ System.out.println("用户名已经存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void method4() {
|
|
|
+ // 要求在控制台当中输入id , 输入几就删除几好student
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
+ System.out.println("请输入要删除的学生编号:");
|
|
|
+ long l = scanner.nextLong();
|
|
|
+ // 把用户输入id 传入到map 当中删除map 元素
|
|
|
+ Student.map.remove(l);
|
|
|
+
|
|
|
+ System.out.println(Student.map);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 2 在控制当中输入账号 和密码
|
|
|
+ * 要求把账号和密码封装map key=username key1=password
|
|
|
+ * 要求面向接口编程login(Map<String,Object> map)
|
|
|
+ * 在接口实现类中完成登录判断账号如果等于admin密码等于123表示登录成功
|
|
|
+ */
|
|
|
+ private static void method3() {
|
|
|
+ //1 创建出来Scaner对象
|
|
|
+ //2 在控制台当中输入账号和密码
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
+ System.out.println("请输入账号:");
|
|
|
+ String username = scanner.next();
|
|
|
+ System.out.println("请输入密码");
|
|
|
+ String password = scanner.next();
|
|
|
+ //3 把控制台当中输入账号和密码存到Map<String,String> username=admin pasword="123"
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ map.put("username",username);
|
|
|
+ map.put("password",password);
|
|
|
+ //4 创建出来一个接口ILoginAble, 在接口当中提供login(Map<String,String> map);
|
|
|
+ //5 创建一个接口的实现类, 在这个实现类当中我们要实现登录.
|
|
|
+ //5.1 上map当中获取username 和获取password ,和admin 和 123进行比较
|
|
|
+ ILoginAble able = new LoginAbleImpl();
|
|
|
+ able.login(map);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 1 统计一个字符串中每个字符出现次数
|
|
|
+ * {s=2,t=3,a=4}
|
|
|
+ *
|
|
|
+ * 2 在控制当中输入账号 和密码
|
|
|
+ * 要求把账号和密码封装map key=username key1=password
|
|
|
+ * 要求面向接口编程login(Map<String,Object> map)
|
|
|
+ * 在接口实现类中完成登录判断账号如果等于admin密码等于123表示登录成功
|
|
|
+ *
|
|
|
+ * 3 在静态代码块中初始化一个Map<Strinig,Student> student(id,name,age)
|
|
|
+ * Student(1L,"zhangsan","sn1")
|
|
|
+ * Student(2L,"lisi","sn2")
|
|
|
+ * Student(3L,"wangwu","sn3")
|
|
|
+ *
|
|
|
+ * 用户在控制台当中输入要删除学生的id , 输入几就删除几号学生
|
|
|
+ *
|
|
|
+ * 4 检查用户名是否存在, 在控制中输入用户名,判断用户名是否存在,
|
|
|
+ * 判断的依据那3中静态代码块中的map
|
|
|
+ */
|
|
|
+ private static void method2() {
|
|
|
+ // 1 创建出来一个Scaner 对象
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
+ // 2 调用.nect方法获取字符串
|
|
|
+ System.out.println("请输入内容:");
|
|
|
+ String str = scanner.next();
|
|
|
+ // 3 需要把字符串转换成字符数组
|
|
|
+ char[] chars = str.toCharArray();
|
|
|
+ // 4 创建HashMap 去统计次数
|
|
|
+ HashMap<Character,Integer> map = new HashMap<>();
|
|
|
+ // 5 遍历字符数组
|
|
|
+ for(char c : chars){
|
|
|
+ Integer count = map.get(c);
|
|
|
+ // 5.1 判断如果在map当中不存在key , 保存这个key值为1
|
|
|
+ if(!map.containsKey(c)){
|
|
|
+ map.put(c,1);
|
|
|
+ }else{
|
|
|
+ // 5.2 在map如果存在,让数量+1
|
|
|
+ map.put(c,count+1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println(map);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 学习hashMap 常用api
|
|
|
+ */
|
|
|
+ private static void method1() {
|
|
|
+ // HashMap 提供了无参数构造器 所以我们可以直接new HashMap()
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ // 增删改查api
|
|
|
+ // put(key,value);
|
|
|
+ // 需求: 往map 当中存两个数据 name = zhangsan age = 10
|
|
|
+ map.put("name", "zhangsan");
|
|
|
+ map.put("age", 10);
|
|
|
+ System.out.println(map);
|
|
|
+ // 删除map当中元素api
|
|
|
+ // map.remove(key)
|
|
|
+ // 需求: 把key 为name 的元素删除掉
|
|
|
+ map.remove("name");
|
|
|
+ System.out.println(map);
|
|
|
+
|
|
|
+ // 修改: map是没有提供特定修改的方法的, 可以使用put 方法进行修改,如果key 相同就回吧value值给覆盖掉
|
|
|
+ map.put("age", 20);
|
|
|
+ System.out.println(map);
|
|
|
+ // 查寻操作:
|
|
|
+ // size 查看map当中大小
|
|
|
+ System.out.println(map.size());
|
|
|
+
|
|
|
+ // isEmpty() 判断map内容视为空
|
|
|
+ System.out.println(map.isEmpty());
|
|
|
+
|
|
|
+ // get(key) 根据key 去map当中获取value 值
|
|
|
+ System.out.println(map.get("age"));
|
|
|
+
|
|
|
+ // containsKey: 判断map当中是否存在这个key containsValue: 判断map当中是否存在这个value
|
|
|
+ System.out.println(map.containsKey("name"));
|
|
|
+ System.out.println(map.containsValue(20));
|
|
|
+ // keyset: 获取map当中所有的key values: 获取map当中所有的value
|
|
|
+ // 往map当中在存 name=wangwu
|
|
|
+ map.put("name","wangwu");
|
|
|
+ System.out.println("map当中所有key:" + map.keySet());
|
|
|
+ System.out.println("map当中所有的value:"+ map.values());
|
|
|
+ }
|
|
|
+}
|