import java.util.*;
/* private */ Date publishDate
;
public boolean equals
(Object obj
) { if(obj == this) return true;
if(obj == null) return false;
if(!(obj
instanceof Book)) return false; if((this.title == null && result.title == null)
&& (this.publishDate == null || result.publishDate == null)) return true;
else if((this.title == null || result.title == null)
|| (this.publishDate == null || result.publishDate == null)) return false;
else if(!result.title.equals(this.title)) return false;
else if(!result.publishDate.equals(this.publishDate)) return false;
else return true;
}
public int hashCode() {
int hash = 1;
hash = hash * 31 + title.hashCode();
hash = hash * 31 + publishDate.hashCode();
return hash;
}
public int compareTo
(Book obj
) { return this.publishDate.compareTo(obj.publishDate);
}
result.title = this.title;
result.comment = this.comment;
result.
publishDate = (Date) this.
publishDate.
clone(); return result;
}
}
public class Main {
public static void main
(String[] args
) { book1.title = "本1";
book1.
publishDate = new Date(1); book2.title = "本1";
book2.
publishDate = new Date(1); boolean bool1 = book1.equals(book2);
book3.title = "本2";
book3.
publishDate = new Date(1); book4.title = "本2";
boolean bool2 = book3.equals(book4);
boolean bool3 = book5.equals(book6);
book7.title = "本3";
book7.
publishDate = new Date(1); book8.
publishDate = new Date(1); boolean bool4 = book7.equals(book8);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgQm9vayBpbXBsZW1lbnRzIENvbXBhcmFibGU8Qm9vaz4sIENsb25lYWJsZSB7CiAgLyogcHJpdmF0ZSAqLyBTdHJpbmcgdGl0bGU7CiAgLyogcHJpdmF0ZSAqLyBEYXRlIHB1Ymxpc2hEYXRlOwogIC8qIHByaXZhdGUgKi8gU3RyaW5nIGNvbW1lbnQ7CgogIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CiAgICBpZihvYmogPT0gdGhpcykgcmV0dXJuIHRydWU7CiAgICBpZihvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgaWYoIShvYmogaW5zdGFuY2VvZiBCb29rKSkgcmV0dXJuIGZhbHNlOwogICAgQm9vayByZXN1bHQgPSAoQm9vaykgb2JqOwogICAgaWYoKHRoaXMudGl0bGUgPT0gbnVsbCAmJiByZXN1bHQudGl0bGUgPT0gbnVsbCkKICAgICAgJiYgKHRoaXMucHVibGlzaERhdGUgPT0gbnVsbCB8fCByZXN1bHQucHVibGlzaERhdGUgPT0gbnVsbCkpIHJldHVybiB0cnVlOwogICAgZWxzZSBpZigodGhpcy50aXRsZSA9PSBudWxsIHx8IHJlc3VsdC50aXRsZSA9PSBudWxsKQogICAgICB8fCAodGhpcy5wdWJsaXNoRGF0ZSA9PSBudWxsIHx8IHJlc3VsdC5wdWJsaXNoRGF0ZSA9PSBudWxsKSkgcmV0dXJuIGZhbHNlOwogICAgZWxzZSBpZighcmVzdWx0LnRpdGxlLmVxdWFscyh0aGlzLnRpdGxlKSkgcmV0dXJuIGZhbHNlOwogICAgZWxzZSBpZighcmVzdWx0LnB1Ymxpc2hEYXRlLmVxdWFscyh0aGlzLnB1Ymxpc2hEYXRlKSkgcmV0dXJuIGZhbHNlOwogICAgZWxzZSByZXR1cm4gdHJ1ZTsKICB9CgogIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICBpbnQgaGFzaCA9IDE7CiAgICBoYXNoID0gaGFzaCAqIDMxICsgdGl0bGUuaGFzaENvZGUoKTsKICAgIGhhc2ggPSBoYXNoICogMzEgKyBwdWJsaXNoRGF0ZS5oYXNoQ29kZSgpOwogICAgcmV0dXJuIGhhc2g7CiAgfQoKICBwdWJsaWMgaW50IGNvbXBhcmVUbyhCb29rIG9iaikgewogICAgcmV0dXJuIHRoaXMucHVibGlzaERhdGUuY29tcGFyZVRvKG9iai5wdWJsaXNoRGF0ZSk7CiAgfQoKICBwdWJsaWMgQm9vayBjbG9uZSgpIHsKICAgIEJvb2sgcmVzdWx0ID0gbmV3IEJvb2soKTsKICAgIHJlc3VsdC50aXRsZSA9IHRoaXMudGl0bGU7CiAgICByZXN1bHQuY29tbWVudCA9IHRoaXMuY29tbWVudDsKICAgIHJlc3VsdC5wdWJsaXNoRGF0ZSA9IChEYXRlKSB0aGlzLnB1Ymxpc2hEYXRlLmNsb25lKCk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0KfQoKcHVibGljIGNsYXNzIE1haW4gewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgIEJvb2sgYm9vazEgPSBuZXcgQm9vaygpOwogICAgYm9vazEudGl0bGUgPSAi5pysMSI7CiAgICBib29rMS5wdWJsaXNoRGF0ZSA9IG5ldyBEYXRlKDEpOwogICAgQm9vayBib29rMiA9IG5ldyBCb29rKCk7CiAgICBib29rMi50aXRsZSA9ICLmnKwxIjsKICAgIGJvb2syLnB1Ymxpc2hEYXRlID0gbmV3IERhdGUoMSk7CiAgICBib29sZWFuIGJvb2wxID0gYm9vazEuZXF1YWxzKGJvb2syKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihib29sMSk7CgogICAgQm9vayBib29rMyA9IG5ldyBCb29rKCk7CiAgICBib29rMy50aXRsZSA9ICLmnKwyIjsKICAgIGJvb2szLnB1Ymxpc2hEYXRlID0gbmV3IERhdGUoMSk7CiAgICBCb29rIGJvb2s0ID0gbmV3IEJvb2soKTsKICAgIGJvb2s0LnRpdGxlID0gIuacrDIiOwogICAgYm9vbGVhbiBib29sMiA9IGJvb2szLmVxdWFscyhib29rNCk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oYm9vbDIpOwoKICAgIEJvb2sgYm9vazUgPSBuZXcgQm9vaygpOwogICAgQm9vayBib29rNiA9IG5ldyBCb29rKCk7CiAgICBib29sZWFuIGJvb2wzID0gYm9vazUuZXF1YWxzKGJvb2s2KTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihib29sMyk7CiAgICAKICAgIEJvb2sgYm9vazcgPSBuZXcgQm9vaygpOwogICAgYm9vazcudGl0bGUgPSAi5pysMyI7CiAgICBib29rNy5wdWJsaXNoRGF0ZSA9IG5ldyBEYXRlKDEpOwogICAgQm9vayBib29rOCA9IG5ldyBCb29rKCk7CiAgICBib29rOC5wdWJsaXNoRGF0ZSA9IG5ldyBEYXRlKDEpOwogICAgYm9vbGVhbiBib29sNCA9IGJvb2s3LmVxdWFscyhib29rOCk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oYm9vbDQpOwogIH0KfQ==