Is it absolutely necessary to have the same fields?
Yes, if you do not want surprises.
If yes, what should I do if I do not use the same field?
hashCode , , equals(), equals hashCode.
, , 3 - a, b, c. a b equals(), 3 hashCode(). , 2 , a b , c , -.
HashMap HashMap?
, , , .