检查arraylist中是否存在值

dgjrabp2  于 2021-07-12  发布在  Java
关注(0)|答案(7)|浏览(360)

如何检查扫描仪中写入的值是否存在于 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();
iecba09b

iecba09b1#

只需使用arraylist.contains(desireElement)。例如,如果您正在从示例中查找conta1帐户,可以使用以下内容:

if (lista.contains(conta1)) {
    System.out.println("Account found");
} else {
    System.out.println("Account not found");
}

edit:请注意,为了使其工作,您需要正确地重写equals()和hashcode()方法。如果您使用的是eclipseide,那么可以通过首先打开源文件来生成这些方法 CurrentAccount 对象及其选择 Source > Generate hashCode() and equals()...

i7uq4tfw

i7uq4tfw2#

最好使用 HashSet 比一个 ArrayList 当您检查值是否存在时。java文档 HashSet 说:
"This class offers constant time performance for the basic operations (add, remove, contains and size)" ArrayList.contains() 可能需要迭代整个列表才能找到您要查找的示例。

hgc7kmma

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[]) {

EmployeeModel first = new EmployeeModel("Sameer", "Developer", 25);
EmployeeModel second = new EmployeeModel("Jon", "Manager", 30);
EmployeeModel third = new EmployeeModel("Priyanka", "Tester", 24);

List<EmployeeModel> employeeList = new ArrayList<EmployeeModel>();
employeeList.add(first);
employeeList.add(second);
employeeList.add(third);

EmployeeModel checkUserOne = new EmployeeModel("Sameer", "Developer", 25);
System.out.println("Check checkUserOne is in list or not");
System.out.println("Is checkUserOne Preasent = ? " + employeeList.contains(checkUserOne));

EmployeeModel checkUserTwo = new EmployeeModel("Tim", "Tester", 24);
System.out.println("Check checkUserTwo is in list or not");
System.out.println("Is checkUserTwo Preasent = ? " + employeeList.contains(checkUserTwo));

}

wwodge7n

wwodge7n4#

我们可以用 contains 方法来检查一个项是否存在,如果我们提供了 equals 以及 hashCode else对象引用将用于相等比较。如果是列表 containsO(n) 按现状操作 O(1) 为了 HashSet 所以最好以后用。在Java8中,我们还可以使用流来检查基于相等性或特定属性的项。

java 8

CurrentAccount conta5 = new CurrentAccount("João Lopes", 3135);
boolean itemExists = lista.stream().anyMatch(c -> c.equals(conta5)); //provided equals and hashcode overridden
System.out.println(itemExists); // true

String nameToMatch = "Ricardo Vitor";
boolean itemExistsBasedOnProp = lista.stream().map(CurrentAccount::getName).anyMatch(nameToMatch::equals);
System.out.println(itemExistsBasedOnProp); //true
nnvyjq4y

nnvyjq4y5#

只是使用 .contains . 例如,如果您正在检查arraylist arr 包含一个值 val ,你只需要跑 arr.contains(val) ,它将返回一个表示是否包含该值的布尔值。有关更多信息,请参阅文档 .contains .

332nm8kg

332nm8kg6#

当数组列表包含基元数据类型的对象时。

Use this function:
arrayList.contains(value);

if list contains that value then it will return true else false.

当数组列表包含用户定义数据类型的对象时。

Follow this below Link

如何比较arraylist中的对象属性?
我希望这个解决办法能对你有所帮助。谢谢

w6mmgewl

w6mmgewl7#

public static void linktest()
{
    System.setProperty("webdriver.chrome.driver","C://Users//WDSI//Downloads/chromedriver.exe");
    driver=new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("http://toolsqa.wpengine.com/");
    //List<WebElement> allLinkElements=(List<WebElement>) driver.findElement(By.xpath("//a"));
    //int linkcount=allLinkElements.size();
    //System.out.println(linkcount);
    List<WebElement> link = driver.findElements(By.tagName("a"));
    String data="HOME";
    int linkcount=link.size();
    System.out.println(linkcount);
    for(int i=0;i<link.size();i++) { 
        if(link.get(i).getText().contains(data)) {
            System.out.println("true");         
        }
    } 
}

相关问题