Сортировка массива 2-d Java String по столбцу с нулевыми значениями - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь отсортировать двумерный массив String в Java, используя указанный столбец c в качестве ключа для сортировки массива. Проблема в том, что в этом столбце есть нулевые значения, и я получаю сообщение об ошибке NullException. Любые предложения о том, как решить эту проблему? Ниже приведен код, который я пробовал до сих пор безуспешно

public static void sortbyColumn(String arr[][], int col) { 
    Arrays.sort(arr, new Comparator<String[]>(){
        @Override
        public int compare(String[] first, String[] second){
            if(first[2] == null) {
                return 0;
            }
            // compare the first element
            int comparedTo = first[2].compareTo(second[2]);
            // if the first element is same (result is 0), compare the second element
            if (comparedTo == 0) {
                return first[2].compareTo(second[2]);
            }
            else {
                return comparedTo;
            }
        }
    });
}

Также некоторые демонстрационные данные, представляющие массив:

[Date, Amt, id , валюта, имя, актив, флаг]

[26.02.2010, 1000000, XX1, USD, Fund1, №, 0]

[26.02.2010, 1000000, XX10, USD, Fund10, №, 0]

[2010-02-26, 1000000, XX10, USD, Fund10, №, 0]

[2010-02-26, 1000000, XX9, USD, Fund9, No, 0]

[Null, Null, Null, Null, Null, Null, Null]

1 Ответ

0 голосов
/ 16 июня 2020

Извините, но, похоже, мне не хватало некоторых дополнительных ограничений. Если я добавлю дополнительные ограничения, все будет работать нормально. Итак, для людей, которые могут столкнуться с той же проблемой (сортировка строкового 2-мерного массива), см. Ответ ниже:

    // Using built-in sort function Arrays.sort 
    Arrays.sort(arr, new Comparator<String[]>() {
      @Override              
      // Compare values according to columns 
      public int compare(final String[] entry1,  
                         final String[] entry2) {

          if (entry1[col] == null && entry2[col] == null) return 0;
          if (entry1[col] == null) return 1;
          if (entry2[col] == null) return -1;
          return entry1[col].compareTo(entry2[col]);
      }
    });  // End of function call sort(). 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...