web-dev-qa-db-fra.com

Vérifier si une valeur existe dans ArrayList

Comment puis-je vérifier si une valeur écrite dans scanner existe dans une 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();
146
daniel__

Utilisez simplement ArrayList.contains (désiréeElement) . Par exemple, si vous recherchez le compte conta1 de votre exemple, vous pouvez utiliser quelque chose comme:

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

Edit: Notez que pour que cela fonctionne, vous devez remplacer correctement les méthodes equals () et hashCode () . Si vous utilisez Eclipse IDE, vous pouvez générer ces méthodes en ouvrant d'abord le fichier source de votre objet CurrentAccount et en sélectionnant Source > Generate hashCode() and equals()....

265
GreenMatt

Mieux vaut utiliser une HashSet qu'une ArrayList lorsque vous vérifiez l'existence d'une valeur . Java Docs pour HashSet dit: "This class offers constant time performance for the basic operations (add, remove, contains and size)"

ArrayList.contains() devra peut-être parcourir la liste entière pour trouver l'instance que vous recherchez.

41
SBA

Veuillez vous référer à ma réponse sur ce post .

Il n'est pas nécessaire d'itérer sur la List, écrasez simplement la méthode equals.

Utilisez equals au lieu de == 

@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;
}

Appelez ça comme ça:

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));

}
14
Sameer Kazi

Nous pouvons utiliser la méthode contains pour vérifier si un élément existe si nous avons fourni l'implémentation de equals et hashCode else. La référence d'objet sera utilisée pour la comparaison d'égalité. De même, dans le cas d’une liste contains, l’opération est O(n), où il s’agit de O(1) pour HashSet, il est donc préférable de l’utiliser plus tard. En Java 8, nous pouvons également utiliser les flux pour vérifier un élément en fonction de son égalité ou d'une propriété spécifique.

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
1
i_am_zero
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");         
        }
    } 
}

Il suffit d'utiliser .contains. Par exemple, si vous vérifiiez si ArrayList arr contient une valeur val, vous exécuteriez simplement arr.contains(val), ce qui renverrait un booléen indiquant si la valeur est contenue. Pour plus d'informations, voir docs for .contains.

1
codingpower472

Lorsque la liste de matrices contient un objet de type de données primitif.

Use this function:
arrayList.contains(value);

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

Lorsque la liste de matrices contient un objet de type de données défini par l'utilisateur.

Follow this below Link 

Comment comparer les attributs d'objets dans une ArrayList?

J'espère que cette solution vous aidera . Merci

0
Aman Goyal