在我的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()));
}
-但事实并非如此。它更改了句子的顺序,但未正确排序。有什么想法吗?
提前谢谢!
编辑:原来这是程序前面的错误。解决该错误后,我的排序工作正常。
答案 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());