Как отсортировать Список объектов по первому ключу в Treemap внутри объектов - PullRequest
0 голосов
/ 21 февраля 2019

В моем Java-коде у меня есть TranscriptionLog-класс, который выглядит следующим образом:

class TranscriptionLog {

    private List<Sentence> sentenceList = new ArrayList<>();
    private boolean isMerged;

Sentence-класс выглядит следующим образом:

class Sentence {

private TreeMap<Long, WordObj> wordMap = new TreeMap<>();
private String sentence;

Я хочу отсортировать фразеListListпо ключу (long) первой записи в его wordMap.Я думал, что делать это в TranscriprionLog.java должно работать:

void sortSentenceList() {
    sentenceList.sort(Comparator.comparing(object -> object.getWordMap().firstEntry().getKey()));
}

- но это не так.Это изменило порядок предложений, но не отсортировало их правильно.Есть мысли по этому поводу?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Оказалось, что это было ошибкой ранее в программе.Моя сортировка работала нормально, когда эта ошибка была устранена.

1 Ответ

0 голосов
/ 21 февраля 2019

Не уверен, если вы знакомы с потоками Java 8, но что-то вроде этого должно работать

//List initialized with results collected from the streaming operation
List<Sentence> result = sentenceList
                              .stream()
                              .sorted(
                                 (s1, s2) -> 
                                    s1.getWordMap().firstEntry().getKey()
                                    .compareTo(s2.getWordMap().firstEntry().getKey())
                              )
                              .collect(Collectors.toList());
...