title: CompareTo/Sorting 2D array of Strings AND Integers
body: <p>Ok, so I just now figured out how to sort a 2d array via string and integers, however I am not sure how to do combine them.</p>
  
  <p>I have a 2d array of users, each row has one users data. The data is string or integer respectively down the column so if I have multiple compare methods, such as sort by name or sort by phone number, how can I implement the initial 2d array since if I declare it as a String I can no longer compare by integer, and if i declare it as an integer I can no longer compare via String.</p>
  
  <p>I am using the basic 2d sort method as of now.</p>
  
  <pre><code>    final Integer[][] data1 = userlistcopy;
      Arrays.sort(data1, new Comparator&lt;Integer[]&gt;() {
  
          @Override
          public int compare(final Integer[] entry1, final Integer[] entry2) {
              final Integer time1 = entry1[1];
              final Integer time2 = entry2[1];
              return time2.compareTo(time1);
          }
      });
      System.out.println("====");
      for (final Integer[] s : data1) {
          System.out.println(s[0] + " " + s[1]);
      }
  </code></pre>
  
  <p>or</p>
  
  <pre><code>final String[][] data1 = userlistcopy;
          Arrays.sort(data1, new Comparator&lt;String[]&gt;() {
  
              @Override
              public int compare(final String[] entry1, final String[] entry2) {
                  final String time1 = entry1[3];
                  final String time2 = entry2[3];
                  return time2.compareTo(time1);
              }
          });
          System.out.println("====");
          for (final String[] s : data1) {
              System.out.println(s[0] + " " + s[1]);
          }
  </code></pre>
  
  <p>So I is there any way to cast the variables if I am comparing a different variable type without making the compiler dislike me? Or is it possible for me to just declare the whole compareTo method an Integer (even with Strings involved) when I am only comparing the integer columns of the array?</p>
  
  <p>Thanks!</p>
  
  <p>EDIT, more detail:
  I have a 2D array, I.E.</p>
  
  <blockquote>
    <p>[0][bob] [3][joe] [4][john] [6][jimmy]</p>
  </blockquote>
  
  <p>It is stored in a String[][] userlistcopy;
  If I want to compareTo with String, it will work since I can compare userlistcopy[1] and ints can be seen as strings even though they are ignored.
  However, if I want to compare via Integer, I have to change userlistcopy to an Integer array, and then it freaks out since they're are Strings present, and i ignore the error it nulls out the String data slots.</p>
  
  <p>EDIT (FIGURED IT OUT).</p>
  
  <p>Ok, I figured it out! I just transferred all the data into an Object array, as I did so I declared their respective String/Int types, then I compared to via Object, and during the actual comparison I just casted/parsed it to my own needs, such as..</p>
  
  <pre><code>Arrays.sort(data1, new Comparator&lt;Object[]&gt;() {
  
          @Override
          public int compare(final Object[] entry1, final Object[] entry2) {
              final Integer time1 = Integer.parseInt(entry1[1].toString());
              final Integer time2 = Integer.parseInt(entry2[1].toString());
              return time2.compareTo(time1);
          }
      });
  </code></pre>
  
  <p>or</p>
  
  <pre><code>final Object[][] data1 = datanew;
      Arrays.sort(data1, new Comparator&lt;Object[]&gt;() {
  
          @Override
          public int compare(final Object[] entry1, final Object[] entry2) {
              final String time1 = entry1[2].toString();
              final String time2 = entry2[2].toString();
              return time2.compareTo(time1);
          }
      });
  </code></pre>
  
  <p>Thanks for the help though!</p>