重写equals的同时为何要重写hashCode?