Как найти элемент в ArrayList по условию для SomeClass?
Есть какой-то класс, в котором есть различные поля и т.д. Примерно так:
public class SomeClass{
private String name;
private String description;
public SomeClass(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
}
И есть другой класс, в котором есть ArrayList с SomeClass в качестве типа:
ArrayList<SomeClass> list = new ArrayList<SomeClass>();
list.add(new SomeClass("a", "a"));
list.add(new SomeClass("b", "b"));
list.add(new SomeClass("c", "c"));
list.add(new SomeClass("d", "d"));
Можно ли получить элемент, у которого getName() == "a", не перебирая весь ArrayList?
Простите, если что-то не так. Раньше я кодил только на JS и редко на php.
Ответы (2 шт):
Нет, либо перебирайте в цикле и проверяйте, либо при помощи Stream API:
list.stream().filter(entry -> entry.getName().equals("a")).findFirst().get();
findFirst возвращает Optional, по-хорошему, перед вызовом get нужно проверить, не пустой ли результат. Или какой-то другой метод Optional использовать.
Важно: не используйте == для сравнения строк, для переменных объектного типа этот оператор сравнивает ссылки на объект.
Вы можете использовать HashMap где Key - ключ для поиска, Value - значения связанное с конкретным ключом
Map<String, String> map = new HashMap<String, String>(); // HashMap<Key, Value>
map.put("a", "a");
map.put("b", "b");
map.put("c", "c");
map.put("d", "d");
map.get("a")
K getKey(): возвращает ключ объекта отображения
V getValue(): возвращает значение объекта отображения