实践过程中需要用到java中list去重,故打算采用contains()方法,
1.若为List<某类>则需在该类中重写equals()方法,及hashCode()方法
(原因即必要性:http://bbs.csdn.net/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;