我陷入困境,需要向正确的方向推进

时间:2019-02-08 20:19:18

标签: java list

这是我的清单输出:

/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)->此方法计算特定页面的访问次数。 谢谢

1 个答案:

答案 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并不那么复杂,因为每个文件被多次调用。