Как я могу проверить, существует ли значение, записанное в сканере, в ArrayList
?
List<CurrentAccount> lista = new ArrayList<CurrentAccount>();
CurrentAccount conta1 = new CurrentAccount("Alberto Carlos", 1052);
CurrentAccount conta2 = new CurrentAccount("Pedro Fonseca", 30);
CurrentAccount conta3 = new CurrentAccount("Ricardo Vitor", 1534);
CurrentAccount conta4 = new CurrentAccount("João Lopes", 3135);
lista.add(conta1);
lista.add(conta2);
lista.add(conta3);
lista.add(conta4);
Collections.sort(lista);
System.out.printf("Bank Accounts:" + "%n");
Iterator<CurrentAccount> itr = lista.iterator();
while (itr.hasNext()) {
CurrentAccount element = itr.next();
System.out.printf(element + " " + "%n");
}
System.out.println();
Ответы:
Просто используйте ArrayList.contains (требуемый элемент) . Например, если вы ищете учетную запись conta1 из вашего примера, вы можете использовать что-то вроде:
Редактировать: Обратите внимание, что для того, чтобы это работало, вам нужно правильно переопределить методы equals () и hashCode () . Если вы используете Eclipse IDE, то эти методы можно сгенерировать, сначала открыв исходный файл для вашего
CurrentAccount
объекта и выбравSource > Generate hashCode() and equals()...
источник
Лучше использовать,
HashSet
чемArrayList
когда вы проверяете наличие значения. Java документы дляHashSet
говорит:"This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
Возможно, придется перебрать весь список, чтобы найти экземпляр, который вы ищете.источник
Пожалуйста, обратитесь к моему ответу на этот пост .
Нет необходимости перебирать
List
просто перезаписыватьequals
метод.Используйте
equals
вместо==
Назовите это так:
источник
this.name.equals(employee.getName())
Мы можем использовать
contains
метод , чтобы проверить , если элемент существует , если мы обеспечили реализациюequals
иhashCode
еще ссылку на объект будет использоваться для сравнения на равенство. Кроме того, в случае спискаcontains
являетсяO(n)
операция , где , как этоO(1)
дляHashSet
так лучше , чтобы использовать позже. В Java 8 мы можем использовать потоки также для проверки элемента на основе его равенства или на основе определенного свойства.Java 8
источник
boolean itemExistsBasedOnProp = selectedR.stream().map(Request::getDesc).anyMatch(cn::equals);
теперь мне нужно извлечь этот элемент! Является ли это возможным ??findAny
: docs.oracle.com/javase/8/docs/api/java/util/stream/…java.util.Collection#stream
Просто используйте
.contains
. Например, если вы проверяете,arr
содержит ли ArrayList значениеval
, вы просто запуститеarr.contains(val)
, что вернет логическое представление, если значение содержится. Для получения дополнительной информации см. Документы для.contains
.источник
Когда Array List содержит объект Primitive DataType.
Когда Array List содержит объект UserDefined DataType.
Как сравнить атрибуты объектов в ArrayList?
Я надеюсь, что это решение поможет вам. Спасибо
источник
источник