java学习4:案例:宠物猫信息管理

xiaoxiao2021-02-28  169

案例:宠物猫信息管理 需求: --添加和显示宠物猫信息 --查找某只宠物猫信息并输出 --修改宠物猫信息 --删除宠物猫信息 类: 属性 --名字 name --年龄 month --品种 species 方法: --构造方法 --获取设置属性方法 --其他方法 编程注意点: 1、输出时要在猫类中重写toString方法 2、由于自定义类,而且用到set,set会去调用hashcode 和 equals方法,    所以在猫类中要重写 hashcode 和 equals【重点】 方法    用到反射类,强转,比较    迭代器每次使用都要重新赋值。     猫类: package com.imooc.set; public class Cat {     private String name;     private int month;     private String species;     //构造方法     //构造方法     public Cat(String name, int month, String species) {         this.name = name;         this.month = month;         this.species = species;     }     //get set 方法     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }     public int getMonth() {         return month;     }     public void setMonth(int month) {         this.month = month;     }     public String getSpecies() {         return species;     }     public void setSpecies(String species) {         this.species = species;     }     @Override     public String toString() {         return "[" +                 "姓名:'" + name + '\'' +                 ", 年龄:" + month +                 ", 品种:" + species + '\'' +                 ']';     }     @Override     public boolean equals(Object obj) {         //如果对象相等,返回true,不用比较属性         if (this == obj)             return true;         //判断obj是否是cat类的对象         if (obj.getClass() == Cat.class) {             Cat cat = (Cat) obj;             return cat.getName().equals(name) &&                     (cat.getMonth() == month) &&                     (cat.getSpecies().equals(species));         }else             return false;     }     @Override     public int hashCode() {         int result = getName() != null ? getName().hashCode() : 0;         result = 31 * result + getMonth();         result = 31 * result + (getSpecies() != null ? getSpecies().hashCode() : 0);         return result;     } } 主类: package com.imooc.set; import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class CatTest {     public static void main(String[] args) {         //define         Cat huahua = new Cat("花花", 12, "英国短毛猫");         Cat fanfan = new Cat("翻翻", 3, "中华田园猫");         //将宠物猫对象放入hashset         Set <Cat> set = new HashSet <Cat>();         set.add(huahua);         set.add(fanfan);         //显示宠物猫信息         Iterator <Cat> it = set.iterator();         while (it.hasNext()) {             System.out.println(it.next());         } //在添加一个与花花属性一样的猫         Cat huahua01 = new Cat("花花", 12, "英国短毛猫");         set.add(huahua01); //显示宠物猫信息         System.out.println("+++++++++++++++++++++++++++++++++");         System.out.println("+++++++添加宠物猫后的输出+++++++++");         it = set.iterator();         while (it.hasNext()) {             System.out.println(it.next());         }         //重新插入新的宠物猫信息         Cat huahua02 = new Cat("花花二代", 2, "英国短毛猫");         set.add(huahua02);         System.out.println("+++++++++++++++++++++++++++++++++");         System.out.println("+++++添加花花二代后宠物猫信息++++++");         it = set.iterator();         while (it.hasNext()) {             System.out.println(it.next());         }         System.out.println("+++++++++++++++++++++++++++++++++");         System.out.println("+++++通过对象查找花花信息++++++");         //在集合中查找花花的信息并输出         if (set.contains(huahua)) {             System.out.println("花花找到了!");             System.out.println(huahua);         } else {             System.out.println("花花没找到");         }         System.out.println("+++++++++++++++++++++++++++++++++");         System.out.println("+++++通过名字查找花花信息++++++");         //在集合中使用名字查找花花的信息         boolean flag = false;         Cat c = null;         it = set.iterator();         while (it.hasNext()) {             c = it.next();             if (c.getName().equals("花花")) {                 flag = true;                 break;             }         }         if (flag == true) {             System.out.println("花花找到了!");             System.out.println(c);         } else {             System.out.println("花花没找到");         }         /**          * 第一次判断,名字等于花花的          * 第一种核心思路是只有一个,唯一,匹配到后break          * 第二种是遍历,但是和set的size无关,然后直接删除某个元素,这种更通用,可以用多元素删除。。          */ //        //第一种方法         for (Cat cat : set) {             if ("花花".equals(cat.getName())) {                 set.remove(cat);                 //break;             }         }         //第二种方法 //        it = set.iterator(); //        while (it.hasNext()) { //            Cat d = it.next(); //            if ("花花".equals(d.getName())) { //                it.remove(); //               // System.out.println(c); //            } //        }         /**          * 第二次判断,删除年龄小于5的          * 核心思路是先做一个小集合,再用removeall去做集合减          */ //        Set<Cat> set1=new HashSet<Cat>(); //        for (Cat cat : set) { //            if (cat.getMonth()<5) { //                set1.add(cat); //            } //        } //        set.removeAll(set1);         System.out.println("+++++++++++++++++++++++++++++++++");         System.out.println("删除花花二代后的数据");         for (Cat cat : set) {             System.out.println(cat);         }         //删除集合中的所有宠物猫信息         System.out.println("+++++++++++++++++++++++++++++++++");         System.out.println("删除所有宠物猫信息");         //第一种,用set.removeAll()返回的值去判断         boolean flag1 = set.removeAll(set); //        if(flag1){ //            System.out.println("猫都不见了...");            for (Cat cat : set) {                System.out.println(cat);            } //        }else{ //            System.out.println("猫还在"); //        }         //第二种,删除后用isEmpty()方法去判断         if (set.isEmpty()) {             System.out.println("猫都不见了..."); //            for (Cat cat : set) { //                System.out.println(cat); //            }         } else {             System.out.println("猫还在");         }     }

}

感谢慕课网!

转载请注明原文地址: https://www.6miu.com/read-21055.html

最新回复(0)