百木园-与人分享,
就是让自己快乐。

集合框架(HashSet集合存储和遍历定义对象)

HashSet集合存储自定义对象并遍历。如果对象的成员变量值相同即为同一个对象
*
* 注意了:
* 你使用的是HashSet集合,这个集合的底层是哈希表结构。
* 而哈希表结构底层依赖:hashCode()和equals()方法。
* 如果你认为对象的成员变量值相同即为同一个对象的话,你就应该在自定义对象中重写这两个方法。
* 如何重写呢?不同担心,自动生成即可。

package cn.itcast_03;

public class Dog {
    private String name;
    private int age;
    private String color;
    private char sex;

    public Dog() {
        super();
    }

    public Dog(String name, int age, String color, char sex) {
        super();
        this.name = name;
        this.age = age;
        this.color = color;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((color == null) ? 0 : color.hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + sex;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Dog other = (Dog) obj;
        if (age != other.age)
            return false;
        if (color == null) {
            if (other.color != null)
                return false;
        } else if (!color.equals(other.color))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (sex != other.sex)
            return false;
        return true;
    }

}
package cn.itcast_03;

import java.util.HashSet;

/*
 * HashSet集合存储自定义对象并遍历。如果对象的成员变量值相同即为同一个对象
 * 
 * 注意了:
 *         你使用的是HashSet集合,这个集合的底层是哈希表结构。
 *         而哈希表结构底层依赖:hashCode()和equals()方法。
 *         如果你认为对象的成员变量值相同即为同一个对象的话,你就应该重写这两个方法。
 *         如何重写呢?不同担心,自动生成即可。
 */
public class DogDemo {
    public static void main(String[] args) {
        // 创建集合对象
        HashSet<Dog> hs = new HashSet<Dog>();

        // 创建狗对象
        Dog d1 = new Dog(\"秦桧\", 25, \"红色\", \'男\');
        Dog d2 = new Dog(\"高俅\", 22, \"黑色\", \'女\');
        Dog d3 = new Dog(\"秦桧\", 25, \"红色\", \'男\');
        Dog d4 = new Dog(\"秦桧\", 20, \"红色\", \'女\');
        Dog d5 = new Dog(\"魏忠贤\", 28, \"白色\", \'男\');
        Dog d6 = new Dog(\"李莲英\", 23, \"黄色\", \'女\');
        Dog d7 = new Dog(\"李莲英\", 23, \"黄色\", \'女\');
        Dog d8 = new Dog(\"李莲英\", 23, \"黄色\", \'男\');

        // 添加元素
        hs.add(d1);
        hs.add(d2);
        hs.add(d3);
        hs.add(d4);
        hs.add(d5);
        hs.add(d6);
        hs.add(d7);
        hs.add(d8);

        // 遍历
        for (Dog d : hs) {
            System.out.println(d.getName() + \"---\" + d.getAge() + \"---\"
                    + d.getColor() + \"---\" + d.getSex());
        }
    }
}

 


来源:https://www.cnblogs.com/ztg-java-xuexi/p/16056897.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 集合框架(HashSet集合存储和遍历定义对象)

相关推荐

  • 暂无文章