Как мне отсортировать эти предложения - PullRequest
0 голосов
/ 09 мая 2020

Могу ли я отсортировать эти предложения в зависимости от слова только как «реальность», «семя», в конечном итоге и т.д. c ... используя ArrayList или что-то еще? 1004 *

03. eventually ~ [ iˈvenCHo͞oəlē ] ≠ [  ]
- He eventually escaped and made his way back to England.

01. reality ~ [ rēˈalətē ] ≠ [ unreality ]
- TV is used as an escape from reality.

02. seed ~ [ sēd ] ≠ [  ]
- A packet of sunflower seeds.

1 Ответ

0 голосов
/ 09 мая 2020

Вы можете представить свои записи как объекты, а затем отсортировать эти объекты.

Ваши записи могут быть представлены в виде следующего класса:

class Entry {
  private int index;
  private String word;
  private String pronunciation;
  @Nullable private String antonym;
  private String exampleSentence;

  // Constructor, getters omitted for brevity.

  @Override public String toString() {
    return new StringBuilder()
      .append(index)
      .append(". ")
      .append(word)
      // build the rest of the entry as you posted above
      .toString()
  }
}    

Теперь, чтобы отсортировать объекты этого класса вам нужно добавить способ их сравнения. Есть 2 подхода.

Вы можете сделать так, чтобы он реализовал интерфейс Comparable. Этот способ рекомендуется, если ваш класс имеет какой-то естественный порядок. Например, Integer реализует этот интерфейс, поскольку числа имеют естественный порядок возрастания.

Чтобы реализовать Comparable и упорядочить объекты вашего класса по слову, вы должны изменить приведенное выше определение следующим образом:

class Entry implements Comparable<Entry> {
   // ...
   @Override 
   public int compareTo(Entry other) {
     return word.compareTo(other.word);
   }
}

Мы добавили новый метод compareTo. Этот метод возвращает и int. При сравнении this с другими, он возвращает отрицательное значение, ноль или положительное значение, когда this other соответственно.

String в Java, естественно, упорядочены в соответствии с их лексикографическим порядком и, следовательно, реализуют Comparable. Поэтому мы просто делегируем реализации поля word.

Другой способ сравнения объектов - реализация Comparator. Этот способ, если предпочтительнее, если у вашего класса есть несколько или альтернативных способов сравнения его объектов, которые вы хотите раскрыть.

Вы можете реализовать Comparator следующим образом:

class EntryComparator implements Comparator<Entry> {
  @Override
  public int compare(Entry first, Entry second) {
    return first.getWord().compareTo(second.getWord);
  }
}

Вы снова переопределяете единственный метод, compare. Этот метод также возвращает int - отрицательное значение, ноль и положительное значение означает, что first second соответственно.

Наконец, вы хотите отсортировать свои объекты. Для этого можно использовать Collections::sort:

Collections.sort(entries); // if Entry is Comparable
Collections.sort(entries, new EntryComparator()); // if you defined a Comparator 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...