Assume you have some objects which have several fields they can be compared by:
public class Person {
private String firstName;
private String lastN
I think it'd be more confusing if your comparison algorithm were "clever". I'd go with the numerous comparison methods you suggested.
The only exception for me would be equality. For unit testing, it's been useful to me to override the .Equals (in .net) in order to determine if several fields are equal between two objects (and not that the references are equal).