如何检查扫描仪中写入的值是否存在于 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();
7条答案
按热度按时间iecba09b1#
只需使用arraylist.contains(desireElement)。例如,如果您正在从示例中查找conta1帐户,可以使用以下内容:
edit:请注意,为了使其工作,您需要正确地重写equals()和hashcode()方法。如果您使用的是eclipseide,那么可以通过首先打开源文件来生成这些方法
CurrentAccount
对象及其选择Source > Generate hashCode() and equals()...
i7uq4tfw2#
最好使用
HashSet
比一个ArrayList
当您检查值是否存在时。java文档HashSet
说:"This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
可能需要迭代整个列表才能找到您要查找的示例。hgc7kmma3#
请参考我在这个帖子上的回答。
不需要迭代
List
只需覆盖equals
方法。使用
equals
而不是==
```@Override
public boolean equals (Object object) {
boolean result = false;
if (object == null || object.getClass() != getClass()) {
result = false;
} else {
EmployeeModel employee = (EmployeeModel) object;
if (this.name.equals(employee.getName()) && this.designation.equals(employee.getDesignation()) && this.age == employee.getAge()) {
result = true;
}
}
return result;
}
public static void main(String args[]) {
}
wwodge7n4#
我们可以用
contains
方法来检查一个项是否存在,如果我们提供了equals
以及hashCode
else对象引用将用于相等比较。如果是列表contains
是O(n)
按现状操作O(1)
为了HashSet
所以最好以后用。在Java8中,我们还可以使用流来检查基于相等性或特定属性的项。java 8
nnvyjq4y5#
只是使用
.contains
. 例如,如果您正在检查arraylistarr
包含一个值val
,你只需要跑arr.contains(val)
,它将返回一个表示是否包含该值的布尔值。有关更多信息,请参阅文档.contains
.332nm8kg6#
当数组列表包含基元数据类型的对象时。
当数组列表包含用户定义数据类型的对象时。
如何比较arraylist中的对象属性?
我希望这个解决办法能对你有所帮助。谢谢
w6mmgewl7#