实践过程中需要用到java中list去重,故打算采用contains()方法,
1.若为List<某类>则需在该类中重写equals()方法,及hashCode()方法
(原因即必要性:http://bbs.youkuaiyun.com/topics/390620011?page=1)
2.具体重写代码:
package com.fit;
import java.util.HashMap;
/**
* 身份证类
*
* @author ZYD
*
*/
public class Code {
/**
* 身份证号码,一旦确定就不能更改
*/
private final int id;
public int getId() {
return id;
}
/**
* 通过构造方法确定身份证号码
*
* @param id
*/
public Code(int id) {
this.id = id;
}
/**
* 重写equals()方法
*/
public boolean equals(Object o) {
// 如果地址一样,则两个对象相同
if (this == o) {
return true;
}
// 如果两个对象是同一类型,则比较其属性值是否都相同。如果都相同,则说明两个对象也相同;否则,说明这两个对象不相同。
if (o instanceof Code) {
Code co = (Code) o;
boolean b = (co.id == this.id);
return b;
}
return false;
}
/**
* 重写hashcode()方法,以身份证号码作为hash码。
*
* @return
*/
public int hashCode() {
return id;
}
/**
* 重写toString()方法
*/
public String toString() {
return "【身份证】:" + id;
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
HashMap<Code, Person> map = new HashMap<Code, Person>();
Person p1 = new Person(new Code(10001),"张三");
Person p2 = new Person(new Code(10002),"李四");
map.put(p1.getCode(), p1);
map.put(p2.getCode(), p2);
System.out.println("HashMap 中存放的人员信息:\n"+map);
//张三改名为张山,身份证号不变。
Person p3 = new Person(new Code(10001),"张山");
map.put(p3.getCode(), p3);
System.out.println("张三改名为张山后 HashMap 中存放的人员信息:\n"+map);
//查找身份证为10001 的人员信息
System.out.println("查找身份证为:10001 的人员信息:"+map.get(new Code(10001)));
}
}
/**
* 人类
* @author Administrator
*
*/
class Person {
/**
* 每一个成人都有一个身份证
*/
private Code code;
/**
* 姓名
*/
private String name;
public Code getCode() {
return code;
}
public void setCode(Code code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person() {
}
public Person(Code code, String name) {
this.code = code;
this.name = name;
}
/**
* 重写equals()方法 当两个人得身份证号相同以及姓名相同时,表示这两个人是同一个人。
*/
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof Person) {
Person p = (Person) o;
boolean b = this.code.equals(p.code) && this.name.equals(p.name);
return b;
}
return false;
}
/**
* 重写toString()方法
*/
public String toString() {
return "【姓名】:" + name + " ";
}
}
引用自:
http://fhuan123.iteye.com/blog/1452275
3.使用contains()方法:
while(rs.next()){
Date date0 = rs.getDate("date");
Time_Number time = new Time_Number();
time.setTime(date0);
time.setNumber(getOneTimeNumber(date0));
if(!list0.contains(time)){
list0.add(time);
// System.out.println("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + rs.getDate("date"));
// System.out.println("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + time.getNumber());
}else{
continue;
}
};
4.时间Date类无法使用“==”故替换为compareTo()方法:
if(t.time.compareTo(this.time) ==0)//date中compareTo的用法。也是比较时间大小的,相等返回0,大于返回1,小于返回-1.
return true;