如何通过对象内树形图中的第一个键对对象列表进行排序

时间:2019-02-21 10:07:05

标签: java sorting arraylist comparator treemap

在我的Java代码中,我有一个TranscriptionLog类,如下所示:

class TranscriptionLog {

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

句子类如下:

class Sentence {

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

我想按wordMap中第一个条目的键(长)对句子列表进行排序。我认为在TranscriprionLog.java中这样做应该可以:

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

-但事实并非如此。它更改了句子的顺序,但未正确排序。有什么想法吗?

提前谢谢!

编辑:原来这是程序前面的错误。解决该错误后,我的排序工作正常。

1 个答案:

答案 0 :(得分:0)

不确定您是否熟悉Java 8 Streams,但是类似的东西应该可以工作

//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());