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

原创 2013年12月02日 20:40:18
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));
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java对象通用方法之覆盖equals时请遵守通用约定、覆盖equals时总要覆盖hashCode、始终要覆盖toString、考虑实现Comparable接口

原文地址: http://www.cnblogs.com/stephen-liu74/archive/2012/01/16/2228360.html 内容摘要: 覆盖equals时请遵守...

HashSet TreeSet 和 equals、hashCode、comparable接口之间关联

HashSet TreeSet和equals、hashCode、comparable接口

设计一个类,只能实现1个实例或3个实例

/********************************************* 题目: 1)设计一个类,我们只能生成该类的一个实例 2)设计一个类,只能生成该类的3个实例 ******...

使用1个标签,2个标签,3个标签,5个标签实现一个十字架

2、请使用1个标签,2个标签,3个标签,5个标签实现一个如下图的水平、垂直都居中短边为50px,长边为150px的在界面垂直和水平居中红色十字架。(网上已经很多答案,你还能想到哪些方法,不限浏览器) ...

骰子的6个面和1个无点面图片

  • 2010年03月24日 12:58
  • 13KB
  • 下载

JAVA基础知识点(六)--接口,多态,继承,抽象类,重载的问题

一、抽象类: 什么是时候使用抽象类:          描述一类事物的时候,发现该事物确实存在着某种行为,但是目前这种          是不具体的,这时候应该抽取这种行为的声明,而不去实现...

JAVA基础知识点(五)--抽象类,接口,多态及应用

一、抽象类: 抽象类的应用场景:          我们在描述一类事物的时候,发现该种事物确实存在着某种行为,但是这种行为目前是不具体的,那么我们可以抽取这种行为的声明,但是不去实现该种行为,这时候...

java面试之抽象类和接口知识点

1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。    2.在abstract class ...

java 接口以及抽象类 一些知识点

内部类和接口 写的一些小代码来玩,,,,

Java泛型知识点:泛型类、泛型接口和泛型方法

Java学习 2017-04-21 14:45 泛型出现的动机在于: 有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。 泛型类 容器类应该算得上最具重用性的类库...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Java] 容器-01 实现 Comparable 接口 / 重写 equals 与 hashCode (1个图 1个类 3个知识点 6个接口)
举报原因:
原因补充:

(最多只允许输入30个字)