关闭

[Java] 容器-01 实现 Comparable 接口 / 重写 equals 与 hashCode (1个图 1个类 3个知识点 6个接口)

630人阅读 评论(0) 收藏 举报
分类:
import java.util.Collection;
import java.util.HashSet;

public class BasicContainer {
	public static void main(String[] args) {
		Collection c = new HashSet();

		c.add("hello");
		c.add(new Name("f1", "l1"));
		c.add(new Integer(100));

		c.remove("hello");
		c.remove(new Integer(100));

		System.out.println(c.remove(new Name("f1", "l1")));
		System.out.println(c);
	}
}

class Name implements Comparable {
	private String firstName, lastName;

	public Name(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFirstName() {
		return firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public String toString() {
		return firstName + " " + lastName;
	}

	public boolean equals(Object obj) {
		if (obj instanceof Name) {
			Name name = (Name) obj;
			return (firstName.equals(name.firstName))
					&& (lastName.equals(name.lastName));
		}
		return super.equals(obj);
	}

	public int hashCode() {
		return firstName.hashCode(); // 重写 equals 方法必须要重写 hashCode 方法, 当你 Name 类这个对象作为索引,key的时候,就要用到 hashCode
	}

	public int compareTo(Object o) {
		Name n = (Name) o;
		int lastCmp = lastName.compareTo(n.lastName);
		return (lastCmp != 0 ? lastCmp : firstName.compareTo(n.firstName));
	}

}

0
0
猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    公告
    个人资料
    • 访问:630312次
    • 积分:11897
    • 等级:
    • 排名:第1235名
    • 原创:521篇
    • 转载:377篇
    • 译文:0篇
    • 评论:14条