千锋教育实训day06————java

6 篇文章 2 订阅

上午

Object中的equals方法

/main/
public static void main(String[] args) {
        Stu s1 = new Stu();
        s1.setId(111);
        s1.setName("zs");
        Stu s2 = new Stu();
        s2.setId(111);
        s2.setName("zs");
        System.out.println(s1.equals(s2));   //结果为flase,因为Obje的equals方法默认比较的是地址值
    }


实现方法一、多次使用得多次调用(不推荐)
 public static boolean bj(Stu s1,Stu s2){
        boolean b= s1.getId()==s2.getId()&&s1.getName().equals(s2.getName());
        return b;
    }

方法二、放在Stu对象内重写equals方法
 @Override
    public boolean equals(Object obj) {
        System.out.println("1111");
        *//* 对象1.equals(对象2)  *//*
        Stu stu=(Stu)obj;
        boolean b=id==stu.getId()&&name.equals(stu.getName());
        return b;

代码优化:
public boolean equals(Object obj) {
        Stu stu = (Stu) obj;
        return id == stu.getId() && name.equals(stu.getName());
    }

用Arraylis集合学生管理系统

/*         /StuManage/
 * 该类专门用于定义学生管理系统相关的功能函数的
 * */
public class StuManage {
    //创建扫描器对象,用户扫描用户添加的学生信息,该扫描器最好创建在成员变量的位置,方便每一个函数都能使用,不用重写创建
    Scanner sc=new Scanner(System.in);
    //创建一个用户存储多个学生信息的集合容器。该容器需要创建在成员变量中,方便整个工具类的所有的功能函数都能共用同一个容器进行操作
    //该集合容器的类型必须是学生对象类型的,为了方便把一个学生的所有进行都封装在一个对象中,也方便后续的获取。
    ArrayList<Student> stus=new ArrayList<>();
    //定义一个函数,判断id是否存在
    public int pdid(String id){
        for (int i = 0; i < stus.size(); i++)
            if (stus.get(i).getId().equals(id)) {
                return i;
            }

        return -1;
    }
    /*
     * 添加功能
     * */
    public void add(){
        //1.扫描用户需要添加学生信息
        System.out.println("请您输入学生的id:");
        String id = sc.nextLine();
        //判断id是否存在
        if (pdid(id)!=-1){
            System.out.println("您输入的id存在!添加失败!");
            return;
        }
        System.out.println("请您输入学生的姓名:");
        String name = sc.nextLine();
        System.out.println("请您输入学生的电话:");
        String phone = sc.nextLine();
        //2.把用户输入的数据封装在一个学生对象中
        Student stu = new Student();
        stu.setId(id);
        stu.setName(name);
        stu.setPhone(phone);
        //3.存储在集合
        stus.add(stu);
        System.out.println("添加成功!");
    }

    /*
     * 查询功能
     * */
    public void selectById(){
        System.out.println("请您输入要查询的id:");
        String id = sc.nextLine();
        //根据id查询是否存在
        int index = pdid(id);
        if (index!=-1){
            System.out.println(stus.get(index));
        }else{
            System.out.println("查询id不存在");
        }


    }

    /*
     * 删除功能
     *
     * */
    public void delById(){
        System.out.println("请您输入要删除的id:");
        String id = sc.nextLine();
        //根据id查询是否存在
        int index = pdid(id);
        if (index!=-1){
            stus.remove(index);
            System.out.println("删除成功!");
        }else{
            System.out.println("查无此人");
        }
    }

    /*
     * 修改功能
     * */
    public void update(){
        System.out.println("请您输入要修改的id:");
        String id = sc.nextLine();
        int index = pdid(id);
        if (index!=-1){
            //说明要修改的学生存在 index
            System.out.println("您要修改的信息如下:");
            System.out.println(stus.get(index));
            System.out.println("确定是否修改?y修改、n取消");
            String key = sc.nextLine();
            if (key.equalsIgnoreCase("y")){
                System.out.println("1.修改名字2.修改电话");
                String num = sc.nextLine();
                switch (num){
                    case "1":
                        System.out.println("请您输入新名字:");
                        String newname = sc.nextLine();
                        stus.get(index).setName(newname);
                        System.out.println("修改成功!");
                        return;
                    case "2":
                        System.out.println("请您输入新电话:");
                        String newphone = sc.nextLine();
                        stus.get(index).setPhone(newphone);
                        System.out.println("修改成功!");
                        return;
                    default:
                        System.out.println("输入有误,修改失败!");
                        return;

                }
            }else{
                System.out.println("您已取消修改!");
                return;
            }

        }else{
            System.out.println("查无此人");
        }

    }

    /*
     * 查询所有
     * */
    public void selectAll(){
        if (stus.size()==0){
            System.out.println("暂无数据!");
        }else{
            System.out.println("显示如下:");
            for (Student student : stus) {
                System.out.println(student);
            }
        }
    }

    public void caidan(){
        while (true){
            System.out.println("1.add 2.selectById 3.delById 4.updateById 5.showAll 6.exit");
            String key = sc.nextLine();
            switch (key){
                case "1":
                    add();
                    break;
                case "2":
                    selectById();
                    break;
                case "3":
                    delById();
                    break;
                case "4":
                    update();
                    break;
                case "5":
                    selectAll();
                    break;
                case "6":
                    System.out.println("欢迎下次使用");
                    System.exit(0);
                default:
                    System.out.println("nonono");
                    break;
            }
        }
    }


/Student/
public class Student {
    private String id;
    private String name;
    private String phone;



    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public boolean equals(Object obj) {
        Student stu = (Student) obj;
        return id == stu.getId() && name.equals(stu.getName());
    }


    /*该方法是重写的object*/
    @Override
    public String toString() {
        return "学生信息:{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }


}

/main/
public static void main(String[] args) {
        StuManage stuManage=new StuManage();
        stuManage.caidan();
    }

下午

HashSet集合容器

特点——无下标    无序    元素不能重复

public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("c");//97
        set.add("b");//98
        set.add("a");//99        

        for (String s:set){
            System.out.println(set);//for增强循环
        }

        set.remove("a");//删除
        set.size();//长度

        System.out.println(set);
        //自动根据哈希值进行排列
    }

HashMap集合容器

特点

  • 存入的数据必须要以“键值”对的形式进行存储   
  • 键值是一一对应的     
  • 该容器中键的数据是不能重复的, 如果重复会覆盖键的值, 值是可以重复的
 public static void main(String[] args) {
        //创建一个HashMap容器
        HashMap<String,String> map = new HashMap<>();
        // put 添加数据
        map.put("111", "zs");
        map.put("222", "ls");
        map.put("111", "zzsss");
        //containKey() 判断是否包含指定参数的键
        boolean b = map.containsKey("111");
        System.out.println(b);

        //KeySey()获取map集合容器中的所有的键,存在一个set集中容器中
        Set<String> set = map.keySet();
        for (String str : set){
            System.out.println(str+"——"+map.get(str));
        }
        System.out.println(map);

        //根据键获取对应的值
        String str =  map.get("1111");
        System.out.println(str);


    }

统计字符串中每一个字符出现的次数

public static void main(String[] args) {
        String str="qwertyuqwerqw";
        // 1.定义容器来存储统计的最终结果
        //统计以上字符串每个字符 出现了多少次 char——Character  int——Integer

//方法一
        HashMap<Character,Integer> map = new HashMap<>();
        // 2.循环数组
        for (int i = 0; i <str.length() ; i++) {
            //3.获取每个下标上的字符
            char ch =str.charAt(i);

            //4.把求出的字符存储在map集中容器中
            //分2种情况
            //  1、如果当前出现的这个字符是第一次出现则map.put(ch.1)
            //  2、如果当前出现的这个字符不是第一次 则 获取之前的次数 int sum =map.get(ch); sum++; map.put(ch, sum);

            if (map.containsKey(ch)){
                int sum = map.get(ch);
                sum++;
                map.put(ch, sum);
            }else{
                map.put(ch, 1);
            }

        }
        System.out.println(map);





//方法二
       /* HashMap<Character,Integer> hm = new HashMap<>();
            // base case
            // 字符串转为字符数组
        char[] chars=str.toCharArray();
        for (char c : chars) {
            if (hm.containsKey(c)) {
                //字符已经存在
                Integer val = hm.get(c);
                val++;
                //已经有key,再put则覆盖原来的value
                hm.put(c, val);
            } else {
                //字符不存在
                hm.put(c, 1);
            }
            }
            // 返回结果
        for(Character key:hm.keySet()){
            Integer value=hm.get(key);
            System.out.println(key+": "+value);
        }

*/

        }

java模拟打卡小程序

/DKUtil   /
/*
* *1.录入员工信息2,打卡3.显示所有员工打卡记录4.退出*
             录入员工信息:*
             提示输入员工的相关信息:id name
*             打卡:
              请您输入打卡的员工工号
*             显示所有员工打卡记录---显示每一个员工的所有的打卡时间
*             
           *员工类:*
           int id
           String name;
           ArrayList<Date> dates;
*
*
            水容器----arraylist<Emp>*
*/
public class DKUtil {
    Scanner sc=new Scanner(System.in);
    HashMap<String,Emp> emps=new HashMap<>();
    /*
     * 1、录入员工
     *
     * */
    public void add(){
        System.out.println("请您输入员工id:");
        String id = sc.nextLine();
        //  int id1 = Integer.parseInt(id);

        System.out.println("请您输入员工name");
        String name = sc.nextLine();
        /*创建员工对象*/
        Emp emp = new Emp();
        emp.setName(name);
        emps.put(id, emp);
        System.out.println("录入成功!");
    }

    /*
     * 2.打卡
     * */
    public void dk(){
        System.out.println("请您输入要打卡的员工id:");
        String id = sc.nextLine();
        if (emps.containsKey(id)){
            //打卡
            Date date = new Date();
            Emp emp = emps.get(id);
            emp.getDates().add(date);
            System.out.println("打卡成功!");

        }else{
            System.out.println("输入的id不存在!");
        }


    }

    /*
     * 显示所有的记录
     * */
    public void showAll(){
        //System.out.println(emps);
        Set<String> set = emps.keySet();
        for (String s : set) {
            System.out.println(s);
            //根据循环的每一个键,获取对应键的emp对象
            Emp emp = emps.get(s);
            System.out.println(emp);
        }
    }
    public void caidan(){
        while (true){
            System.out.println("1.录入2.打卡3.显示4.退出");
            String key = sc.nextLine();
            switch (key){
                case "1":
                    add();
                    break;
                case "2":
                    dk();
                    break;
                case "3":
                    showAll();
                    break;
                case "4":
                    System.exit(0);
                default:
                    System.out.println("重选!");
                    break;
            }
        }
    }

/Emp/
public class Emp {
    //private String id;
    private String name;
    private ArrayList<Date> dates=new ArrayList<>();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ArrayList<Date> getDates() {
        return dates;
    }

    public void setDates(ArrayList<Date> dates) {
        this.dates = dates;
    }

    @Override
    public String toString() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time="";
        for (Date date : dates) {
            String str = sdf.format(date);
            time+=str+"\t";
        }


        return "员工信息:" +
                "姓名='" + name + '\'' +
                ", 打卡记录=" + time +
                '}';
    }
}

/mian/
public static void main(String[] args) {
        DKUtil dkUtil=new DKUtil();
        dkUtil.caidan();
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值