title: Compare by multiple methods in java compareTo?
body: <p>I don't think that's the best way to word that title but I can't think of a better way to word it. Here's my problem: I have to write a method that compares in several different ways. If the last names are the same, I then need to compare by first name. If the first names are the same, then I need to sort by section. What would be the most effective way to sort a data structure in this hierarchy? Here's what I've currently got and I think I understand why it doesn't work but I can't come up with a different way to write this function:</p>
  
  <pre class="lang-java prettyprint-override"><code>//Student class structure, each field has a public get/set method
  public class Student implements Comparable&lt;Student&gt;
  {
    private String fname;
    private String lname;
    private int section;
  }
  
  //My current compareTo method
  @Override
  public int compareTo(Student s)
  {
    /*
      -compare by last name
      -if the same, compare by first name
      -if the same, compare by section
    */
  
    String slast = s.getLastName();
  
    if(lname.compareTo(slast) == 0)
    {
      String sfirst = s.getFirstName();
  
      if(fname.compareTo(sfirst) == 0)
      {
        int sclass = s.getSection();
  
        return Integer.compare(section, sclass);
      }
  
      else
      {
        return fname.compareTo(sfirst);
      }
    }
  
    else
    {
      return lname.compareTo(slast);
    }
  }
  </code></pre>