基于java中字段值的列表列表

时间:2014-09-14 17:27:50

标签: java

我最近参加了法国巴黎银行银行的采访 我被问到以下基于收集的问题。

有一个Employee类,其中包含对Designation类的引用

我被要求写一个帮助类,它接受员工列表并返回 根据其指定分组的员工名单。

class Employee
{
    Designation designation;
    public Employee(Designation designation) {
        this.designation=designation;
    }
}

class Designation
{
    String des;
    public Designation(String des) {
        this.des=des;
    }

}

class Helper
{
    public static List<List<Employee>> groupList(List<Employee> empList)
    {
        List<List<Employee>> empGroupList=new ArrayList<List<Employee>>();

        for(Employee e:empList)
        {
            // more code goes here
        }

        return empGroupList;
    }

}

我回答了这个问题,假设Helper类有指定列表但是Interviewer说Helper类是Generic并且没有关于指定的知识。

1 个答案:

答案 0 :(得分:3)

最简单的方法是在内部使用Map,然后将其values()转换为List

public static List<List<Employee>> groupList(List<Employee> empList) {
    Map<String, List<Employee>> map = new HashMap<>();

    for(Employee e : empList) {
        String designation = e.getDesignation();
        List<Employee> list = map.get(designation);
        if (list == null) {
            list = new ArrayList<>();
            map.put(designation, list);
        }
        list.add(e);
    }

    return new ArrayList<>(map.values());
}