У меня есть карта (скажем, о людях, например):
public Map<String, Person> personMap = new HashMap<>();
И я хочу провести поиск по этой карте, фильтруя по имени.У меня есть этот код, но мне любопытно, есть ли более оптимальный или элегантный способ сделать это.
public ArrayList<Person> searchByName(String query) {
ArrayList<Person> listOfPeople = new ArrayList<>();
for (Map.Entry<String, Person> entry : this.personMap.entrySet()) {
Person person = entry.getValue();
String name = entry.getValue().getName();
if (name.toLowerCase().contains(query.toLowerCase())) {
listOfPeople.add(person);
}
}
if (listOfPeople.isEmpty()) {
throw new IllegalStateException("This data doesn't appear on the Map");
}
return listOfPeople;
}
заранее спасибо