Java Set集合使用方法介绍(2)——宠物猫信息管理

Java
public class Cat {
    private String name;// 名字
    private int month;// 年龄
    private String species;// 品种

    // 构造方法
    public Cat(String name, int month, String species) {
        super();
        this.name = name;
        this.month = month;
        this.species = species;
    }

    // getter与setter方法
    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 int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + month;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((species == null) ? 0 : species.hashCode());
        return result;
    }

    @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.species.equals(species));
        }
        return false;
    }

}

Java
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CatTest {

    public static void main(String[] args) {
        //定义宠物猫对象
        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());
        }

        System.out.println("***************************");
        //重新插入一个新宠物猫
        Cat huahua02 = new Cat("花花二代",2,"英国短毛猫");
        set.add(huahua02);
        System.out.println("添加花花二代后的宠物猫信息:");
        it=set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

        //在集合中查找花花的信息并输出
        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){
            System.out.println("花花找到了");
            System.out.println(c);
        }else{
            System.out.println("花花没找到");
        }
        //删除花花二代的信息并重新输出
        for(Cat cat:set){
            if("花花二代".equals(cat.getName())){
                set.remove(cat);
                break;
            }
        }
        System.out.println("*********************************");
        System.out.println("删除花花二代后的数据");
        for(Cat cat:set){
            System.out.println(cat);
        }
        //删除集合中的所有宠物猫信息
        System.out.println("****************");
        boolean flag1 =set.removeAll(set);
        if(set.isEmpty()){
            System.out.println("猫都不见了。。。");
        }else{
            System.out.println("猫还在。。。");
        }
    }

}

这里写图片描述
这里写图片描述
HashSet是Set的一个重要实现类,称为哈希集,HashSet中的元素无序并且不可以重复,HashSet中只允许一个null元素,具有良好的存取和查找性能。
我们必须要重写equals方法来保证无法插入重复的数据。
hashcode是哈希表中一个重要的元素,在数组中我们查找元素都是从头到尾遍历,效率较低,而哈希表中我们把每个元素与hashcode求余,得到的余数相同的元素放在一起,这样加快了查找的效率,而hashcode具体选择多少是我们不关心的,我们用IDE的自动重写hashcode功能就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值