У меня есть внешняя служба, откуда я получаю информацию о всех сотрудниках организации, как показано ниже.Я использую java8 и весеннее облако, симулирующее клиента для использования услуги
[
{
"employee": {
"empId": "empId123",
"name": "Emp1",
"houseNumber": "5",
"firstName": "firstName1",
"lastName": "lastName1",
"city": "city1",
"band": "A"
},
"type": "ABC"
},
{
"employee": {
"empId": "empId456",
"name": "Emp2",
"houseNumber": "7",
"firstName": "firstName2",
"lastName": "lastName2",
"city": "city2",
"band": "B"
},
"type": "ABC"
}
:
:
]
Служба сведений о сотрудниках содержит около 10000+ сведений о сотрудниках.
У меня есть требование для создания еще двух служб
- Сортировка на основе city и houseNumber и возврат всех сотрудников
- Служба фильтрации сотрудников на основе определенных атрибутов, таких как city , band , empId и т. Д.
В настоящее время для службы сортировки я использую, как показано ниже
final List<Employees> employeesList = employeeService.getAllEmployees().stream()
.sorted((emp1, emp2) -> p1.getAddress().getCity().compareTo(emp2.getAddress().getCity()))
.sorted((emp1, emp2) -> p1.getAddress().getHouseNumber().compareTo(emp2.getAddress().getHouseNumber()))
.collect(Collectors.toList());
Дляфильтрация Я использую приведенный ниже код
String cityName = "some city name"...
final List<Employees> employeesfilteredList = employeeService.getAllEmployees()
.stream()
.filter(employee -> employee.getAddress().getCity().equalsIgnoreCase(cityName == null ? "" : cityName))
.collect(Collectors.toList());
, но мой клиент, технический специалист, говорит, что у него проблемы с производительностью, и попросил принести что-то, что займет меньше времени (лучше всего будет O (1)) для получения результата
Может кто-нибудь сказать мне, в чем проблема с текущим подходом, который я использую, и есть ли способ, которым я могу импровизировать любым другим способом или подходом