列表的前 k 个结果 Java

Top k results of a List Java

我正在使用堆排序算法对对象列表进行排序并且工作正常。问题是当我尝试使用此代码获取列表的前 k 个结果时:

HeapSort.sort(songs);
List<Song> highk = songs.subList(songs.size() - k, songs.size());
System.out.println(highk);

这将打印列表的最后 k 个元素。 k 很好,因为即使我用数字更改它,我也会遇到同样的问题。

如果你想要前 k 个元素,那么你的方法调用应该如下所示:

List<Song> highk = songs.subList(0, k);

当你看到 subList 方法的 java doc 注释时,它清楚地说,第一个参数是 fromIndex,第二个参数是 toIndex (here).