使用流或集合对对象内的列表进行排序

时间:2018-08-28 11:41:08

标签: java lambda collections stream

我们有一个场景,我们必须根据companyName对Project对象进行排序。

class Department  {
    Project projectObj;
    ....
    getter..
    setters..
}

class Project {
    List<Company> companyList
    ....
    getter..
    setters..
}

class Company  {
    String companyName ;
    ....
    getter..
    setters..
}

最终结果应该是一个报告,该报告将打印公司信息,并将根据公司名称进行排序。我无法从db获取列表,因为无法更改需要使用Java本身完成的查询。

我尝试使用Collection.Sort(),但无法对列表进行排序。该报告未分类。我如何使用流或集合来做到这一点。无法分隔列表,因为稍后将使用该对象。

我尝试过的事情。

 Collections.sort(deptObj.getProjectObj.getCompanyList(), Comparator.comparing(
            (Company c) -> c.getCompanyName()));

2 个答案:

答案 0 :(得分:1)

这应该做:

google.charts.load('current', { 'packages': ['corechart', 'gauge'] });

旧答案:

您可以在Project类本身中具有方法。您可以调用它返回Company对象的排序列表。它使用Java 8的Collections.sort(deptObj.getProjectObj.getCompanyList(), String::compareToIgnoreCase); stream方法进行排序,然后sorted进行排序。它使用Comparator基于限定符进行排序。这里的限定词是公司名称。

collect

答案 1 :(得分:0)

如果项目中公司的记录很多,那么很难,如果有一条记录我们可以做

如果数据是从数据库中提取的(根据您的评论),则最好按查询顺序对用户数据库进行排序

如果您想用代码做并安装Java 8

list.sort(Comparator.comparing(project  -> 
   (project.getCompanyList() != null && project.getCompanyList().size>0 )?project.getCompanyList().get(0): null));