Как разбить список на список меньших списков по свойству объекта? - PullRequest
1 голос
/ 27 февраля 2020

Поэтому я пытаюсь найти наиболее эффективный способ разбить список объектов по имеющемуся у них свойству на меньший список, а затем добавить этот список в новый список, это звучит странно, но если вы прочитаете код, я думаю, вы поймете

class Test {

    @Test
    private fun printEmployeesInShipping(){
        val employeesByDepartment = getEmployeesByDepartment()
        for (department in employeesByDepartment) {
            if(department.get(0).department.equals("Shipping")){
                for (employee in department) println("Name:$employee")
            }
        }
    }

    private fun getEmployeesByDepartment(): List<List<Employee>>{
        val listOfEmployee = ArrayList<Employee>()
        listOfEmployee.add(Employee("Bob", "Shipping"))
        listOfEmployee.add(Employee("Stacy", "Shipping"))
        listOfEmployee.add(Employee("Tom", "Sales"))
        listOfEmployee.add(Employee("John", "Sales"))
        listOfEmployee.add(Employee("Jim", "Accounting"))
        listOfEmployee.add(Employee("Kim", "Accounting"))
        //What is the most efficient way to split this list into separate lists and return it

    }

}
data class Employee (
        val name: String? = null,
        val department:String? = null
) 

1 Ответ

3 голосов
/ 27 февраля 2020

Просто сделай:

private fun getEmployeesByDepartment(): List<List<Employee>>{
    // [ ... ]
    return listOfEmployee.groupBy { it.department }.map { it.value }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...