这是我的清单输出:
/help_page/1 80 visits
/contact 89 visits
/home 78 visits
/about/2 90 visits
/index 82 visits
/about 171 visits
现在,我需要对这种顺序进行排序,并按如下所示的大多数访问次数进行显示:
/about 171 visits
/about/2 90 visits
/contact 89 visits
/index 82 visits
/help_page/1 80 visits
/home 78 visits
如何在Java中实现呢?我已经尝试过用collections.sort()来按字母顺序对列表进行排序。
这是我将数据添加到列表中的方式:
List<String> list = new ArrayList<>();
for(String e:File.getPageList() ) {
list.add(e + " " + File.TotalPages(e) + " visits");
}
File.getPageList()->我创建此方法的目的是从文件中获取数据并将其存储到列表中。
File.TotalPages(e)->此方法计算特定页面的访问次数。 谢谢
答案 0 :(得分:1)
您可以在循环之前对文件列表进行排序:
List<String> list = new ArrayList<>();
List<String> fileList = File.getPageList();
// sort the fileList using File::TotalPages as key extractor for the comperator
fileList.sort(Comparator.comparing(File::TotalPages).reversed());
// use the sorted list for building the result:
for(String e:fileList) {
list.add(e + " " + File.TotalPages(e) + " visits");
}
我假设File.TotalPages
并不那么复杂,因为每个文件被多次调用。