列表的前 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).
我正在使用堆排序算法对对象列表进行排序并且工作正常。问题是当我尝试使用此代码获取列表的前 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).