Мой массив String выглядит как String [] [] cat = new String [13] [4];

Я хочу отсортировать все [13] по 3-му значению во втором столбце «[] [2]».

int  myNum = 0;
Arrays.sort(cat, new Comparator<String[]>() {
         @Override
         public int compare(final String[] entry1, final String[] entry2) {
         final String e1 = entry1[1];
         final String e2 = entry2[1];

         return e1.compareTo(e2);
         }
         });

         for (final String[] s : cat) {
         System.out.println("SORTING: "+s[0] + " " + s[1]+ " " + s[2]+ " " + s[3]);
         try {
                myNum = Integer.parseInt(s[2]);
            } catch (NumberFormatException nfe) {
                System.out.println("Could not parse " + nfe);
            }

            if (myNum > 3 && s[1].equals("1")) {
                moreValues2.add(s[1]);
                moreURLS2.add(s[3]);
            }

         } 

Как выбрать значение для сортировки. В моем коде выше сортировка выполняется по первому столбцу, но я хочу отсортировать по 3-му столбцу. Я не уверен, что нужно изменить и зачем это нужно.
Я прочитал http://docs.oracle.com/javase /6/docs/api/java/util/Comparator.html безрезультатно. и версия 7

0
Rick 21 Апр 2014 в 21:01

2 ответа

Лучший ответ

В вашем компараторе значения выбираются здесь:

final String e1 = entry1[1];
final String e2 = entry2[1];

Просто замените [1] на [2] или [3] (так как я не понимаю «третье значение во втором столбце»).

1
Zoyd 21 Апр 2014 в 17:08

Вместо final String[] s : cat Вы можете поставить final String s : cat[2] Это приведет к получению всех строк в 3-м ряду, а затем вы можете отсортировать их

0
Jeeter 21 Апр 2014 в 17:09