`

java hashCode,compareTo,clone方法使用例子

    博客分类:
  • java
阅读更多
package net.xxt;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

/**
* 支持HashCode查找, 重写了equals和hashCode方法
* 支持对象克隆,实现了Cloneable接口,重写了clone方法
* 支持对象比较,实现了Comparable接口,重写了compareTo方法
* 支持直接打印对象,重写了toString方法。
* @author   zhaoguoli
* @version  v1.0 2009-07-09  0:30 创建
*/
class Person implements Cloneable, Comparable {
private String name;
private float score;
private int age;


public Person(String name, int age, float score) {
this.name = name;
this.age = age;
this.score = score;
}


public boolean equals(Object obj) {
return true;
}
    /**
     * 必须要重写equals方法才行
     */
public int hashCode() {
return this.name.hashCode() + this.age * 1000;
}

/**
* 实现Cloneable接口,protected --> public ,抛出异常,调用父类SUPER
*/
public Object clone() throws CloneNotSupportedException {
return super.clone();
}

/**
* 实现Comparable接口,重写compareTo方法,返回值1,0,-1
* 覆写compareTo方法就是重建排序规则
*/
public int compareTo(Object obj) {
Person p = (Person) obj;
if (p.score > this.score) {
return 1;
} else if (p.score < this.score) {
return -1;
} else {
// 如果成绩相等则判断年龄
if (p.age > this.age) {
return 1;
} else if (p.age < this.age) {
return -1;
} else {
return 0;
}
}
}

/**
* 定义打印格式
*/
public String toString() {
return "姓名:" + this.name + ",年龄:" + this.age + ",成绩:" + this.score;
}



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;
}

};

/**
* java特性测试及汇总
* @author    赵国力
* @version   v1.0 2009-07-09  0:36 创建
*/
public class JavaAdv {

/**
* 测试类
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// hashcode测试

System.out.println("hashCode方法使用测试");
Map m = new HashMap();
m.put(new Person("张三", 30, 30), "张三");
System.out.println(m.get(new Person("张三", 30, 30)));

System.out.println("------------------------------");

// clone测试

System.out.println("clone方法使用测试");
Person p1 = new Person("张三", 30, 30);
Person p2 = (Person) p1.clone();
p2.setName("李四");
System.out.println(p1);
System.out.println(p2);

System.out.println("------------------------------");

// 比较对象测试
System.out.println("compareTo方法使用测试");
Person p[] = new Person[5];
p[0] = new Person("张三", 20, 96);
p[1] = new Person("李四", 19, 96);
p[2] = new Person("王五", 19, 97);
p[3] = new Person("赵六", 21, 78);
p[4] = new Person("孙七", 20, 80);

Arrays.sort(p);
for (int i = 0; i < p.length; i++) {
System.out.println(p[i]);
}

System.out.println("------------------------------");

//比较对象测试2
System.out.println("compareTo方法使用测试");
Set s = new TreeSet();
s.add(new Person("张三", 20, 96));
s.add(new Person("李四", 19, 96));
s.add(new Person("王五", 19, 97));
s.add(new Person("赵六", 21, 78));
s.add(new Person("孙七", 20, 80));
Iterator iter = s.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}

System.out.println("------------------------------");



}

}
分享到:
评论

相关推荐

    JAVA中常用类的常用方法.docx

    JAVA 中常用类的常用方法 JAVA 中有许多常用的类,每个类都有其特定的方法,本文将对 java.lang.Object 类、String 类和 StringBuffer 类的常用方法进行讲解。 一、java.lang.Object类 java.lang.Object 类是 ...

    JAVA中常用类的常用方法.pdf

    JAVA中常用类的常用方法主要涵盖了java语言中基础类库的关键类以及它们提供的主要方法。以下是针对文档内容的详细解释: 1. java.lang.Object类 Object类是Java中所有类的超类,它提供了多种方法,这些方法在Java中...

    Android java应掌握的基本概念 大全

    - **use-a:** 使用关系,如一个类使用另一个类的方法或属性。 - **has-a:** 组合关系,表示一个类拥有另一个类的实例作为其成员变量。 - **is-a:** 继承关系,表示一个类是另一个类的子类。 #### 二、封装 **定义...

    重难点之java_javalang包.pdf

    `Object`提供了诸如`clone()`、`equals()`和`hashCode()`等基本方法,用于对象复制、比较和哈希计算。 7. **Thread与Runnable接口** - `Thread`类代表程序中的一个执行线程,而`Runnable`接口定义了线程执行的任务...

    Java日期时间教程含示例代码

    - 使用`compareTo()`方法,它基于`Comparable`接口,`Date`类实现了这个接口。 5. **日期格式化**: - `SimpleDateFormat`类允许我们以指定的格式解析和格式化日期。例如,`"yyyy-MM-dd HH:mm:ss"`格式将日期转换...

    java api中文文档lang

    它包含了所有对象共有的基本方法,如`equals()`、`hashCode()`、`toString()`以及`clone()`等。`equals()`用于比较两个对象是否相等,`hashCode()`返回对象的哈希码,`toString()`则将对象转换为字符串表示形式。 2...

    【IT十八掌徐培成】Java基础第10天-02.builder设计模式-StringBuilder-包装类.zip

    此外,包装类还支持`equals()`、`compareTo()`等比较操作,以及`hashCode()`和`clone()`等方法。 结合Builder模式,我们可以构建一个用于创建复杂对象的Builder类,其中包含对`StringBuilder`的使用,以生成包含...

    Java第6章 字符串 含源代码

    `compareTo()`方法按照字典顺序比较字符串,`clone()`创建字符串的副本。 9. **国际化** `java.text`包提供了`Format`类族,支持日期、数字、货币等的本地化格式化。 10. **性能优化** 在大量字符串操作时,使用...

    java面试讲题汇总-word可打印版

    11. String类的常用方法包括concat()、compareTo()、trim()、split()等。 12. 普通类可以有构造方法和实例方法,可以实例化,而抽象类不能实例化,通常包含抽象方法。 13. 接口仅包含抽象方法和常量,不能有实现,...

    Java函数习惯用法详解

    hashCode() 函数是 Java 中另一个重要的函数,它用来生成对象的哈希码。hashCode() 函数的实现必须满足以下条件: * 当 x 和 y 两个对象具有 x.equals(y) == true 时,你必须要确保 x.hashCode() == y.hashCode()。...

    求职宝典-Java 基础面试题

    - **Comparable**:接口用于实现对象的自然排序,比如String、Integer等类已经实现了Comparable接口,可以根据compareTo方法进行比较。 - **Comparator**:接口用于定制排序,当需要自定义排序规则时,可以创建...

    Effictive Java

    - 实现`Comparable&lt;T&gt;`接口,定义`compareTo`方法。 - 确保比较逻辑的正确性,符合一般契约。 #### 四、类与接口 ##### Item12:最小化类及其成员的可访问性 - **目的**:降低系统的耦合度,提高可维护性。 - **...

    Java通用范例开发金典配套源代码

    【Java通用范例开发金典配套源代码】涵盖了Java编程中的多个重要知识点,包括类的处理、静态成员的使用、类反射、字符处理、数组与集合的处理以及窗体效果等。以下是对这些知识点的详细解释: 1. **类的处理**: -...

    Java常用类[借鉴].pdf

    - `Date`:表示特定时间点,提供了`compareTo()`、`equals()`、`getTime()`和`toString()`等方法。 - `Calendar`:抽象类,提供了日期和时间的修改功能,支持国际化,如`getInstance()`、`get()`、`set()`、`add()`...

    apache commons 包最新使用指南(2009英文)

    - `clone()` 和 `reverse()` 方法简单高效,适用于大多数场景。 - 还可以利用 `ArrayUtils` 中的其他方法进行更复杂的数组操作。 ##### 1.10. 在对象数组和原始类型数组之间转换 - **问题**:在 Java 中,对象...

    java面试宝典

    - **答案:** 不一定非得使用.java作为扩展名,但这是约定俗成的做法,易于识别并被开发工具支持。 - **解释:** Java编译器通过文件名来确定源代码文件,并不强制要求特定的扩展名。但在实际开发中,.java是最常用...

Global site tag (gtag.js) - Google Analytics