在Java的Set集合中放入自定义类
来源:互联网 发布:黄连和黄连 知乎 编辑:程序博客网 时间:2024/06/07 17:03
1. 题目来源
在做Java竞赛的编程题中,有一题要求实现一个Person类,要求能够放入到Set集合中,Person类要求有两个属性姓名和年龄。
2. 题目解析
首先复习一下基础知识,在Java中
a.equals(b)为true,则a和b的HashCode一定相等
Java中的散列表采用HashCode计算在数组中的位置,由于我们需要重写equals方法,所以必须重写hashcode()方法,这样才能写出符合题目要求的代码。Object类中的equals方法判断的是对象的引用是否相同,我们这里需要改成判断是否是Person类的对象,然后判断姓名和年龄是否相等。
3. 参考代码
Person类
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } 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; } @Override public boolean equals(Object obj) { if (obj instanceof Person) { Person person = (Person)obj; if (name.equals(person.getName())) { if (age == person.getAge()) { return true; } } } return false; } @Override public int hashCode() { return name.hashCode() + new Integer(age).hashCode(); }}
测试类
public class Test3 { public enum Dogs {collie, harrier, shepherd}; public static void main(String[] args) { Set<Person> set = new HashSet<Person>(); set.add(new Person("张三", 25)); set.add(new Person("张三", 25)); set.add(new Person("张三", 25)); Iterator<Person> it = set.iterator(); while (it.hasNext()) { Person person = (Person)it.next(); System.out.println(person.getName()); } }}
运行结果
张三
阅读全文
0 0
- 在Java的Set集合中放入自定义类
- java中set集合
- java中Set集合
- Java中set集合
- JAVA中Set集合
- java中Set集合
- java中List 、 Set、Map 集合类的区别
- Java中set集合的用法
- java中set集合的总结
- java中set集合的使用方法
- Java中Map、Set集合的遍历
- Java中Set集合的使用
- Java 中Set集合的使用
- JAVA中Set集合--HashSet的使用
- java中set集合的使用方法
- java中set集合的使用方法
- Java中set集合的使用
- 自定义view中在指定的矩形区域中放入一张图片
- eclipse 中使用git插件
- python 的继承和多态
- Cassandra压实(一)
- java学习笔记(一)——对象
- 第一次开通博客
- 在Java的Set集合中放入自定义类
- 基于Docker的微服务架构-企业级服务集群实践(一)
- 《java8函数式编程》第三章课后习题
- 分布式RPC框架性能大比拼
- 高性能网络编程(四)--TCP连接的关闭
- 用户输入的数字转化为二进制后中数字1的个数
- 【笔记】深入理解 java 虚拟机---虚拟机内存溢出
- Python基础-分布式进程 Master/Worker模型
- JVM内存管理机制