Вы можете представить свои записи как объекты, а затем отсортировать эти объекты.
Ваши записи могут быть представлены в виде следующего класса:
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