public class DepartmentLaboratoryService { private List departmentList; public int getChildCount(DepartmentLaboratory parent, int limit, int offset) { Stream stream = getChildren(parent).stream(); return stream.collect(Collectors.toList()).size(); } public Boolean hasChildren(DepartmentLaboratory parent) { return departmentList.stream() .anyMatch(department -> Objects.equals(parent, department.getParent())); } public Collection fetchChildren(DepartmentLaboratory parent, int limit, int offset, List sortOrders) { // get filtered list Stream stream = getChildren(parent).stream(); // apply sorting Comparator comparator = (o1, o2) -> 0; for (DepartmentLaboratorySort departmentSort : sortOrders) { switch (departmentSort.getPropertyName()) { case DepartmentLaboratorySort.NAME: comparator = comparator.thenComparing(DepartmentLaboratory::getPatientName); break; } if (!departmentSort.isDescending()) comparator = comparator.reversed(); } stream = stream.sorted(comparator); // return results return stream.skip(offset).limit(limit).collect(Collectors.toList()); } private List getChildren(DepartmentLaboratory parent){ return departmentList.stream() .filter(department -> Objects.equals(parent, department.getParent())).collect(Collectors.toList()); } //my code public List getDepartmentList() { return departmentList; } public void setDepartmentList(List departmentList) { this.departmentList = departmentList; } }