Vérifier si une valeur existe dans ArrayList

Comment puis-je vérifier si une valeur qui est écrite dans le scanner existe dans un 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();
140
demandé sur Frxstrem 2010-12-10 02:11:52

7 réponses

il suffit d'utiliser ArrayList.contient (desiredElement) . Par exemple, si vous cherchez le compte conta1 dans 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 aurez besoin de remplacer correctement les méthodes equals() et hashCode() . Si vous utilisez Eclipse IDE, alors vous pouvez avoir ces méthodes générées en ouvrant d'abord le fichier source de votre objet CurrentAccount et en sélectionnant Source > Generate hashCode() and equals()...

256
répondu GreenMatt 2010-12-10 01:33:46

mieux vaut utiliser un HashSet qu'un 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 itérer toute la liste pour trouver l'instance que vous recherchez.

38
répondu SBA 2013-12-27 12:48:40

s'il vous Plaît se référer à ma réponse sur ce post .

il n'est pas nécessaire d'itérer sur la List juste remplacer la méthode equals .

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

}
12
répondu Sameer Kazi 2018-04-01 14:25:00

il suffit d'utiliser .contains . Par exemple , si vous vérifiiez si un ArrayList arr contient une valeur val , vous lanceriez simplement arr.contains(val) , qui retournerait un booléen représentant si la valeur est contenue. Pour plus d'informations, voir le docs pour .contains .

1
répondu codingpower472 2018-04-10 03:12:42

lorsque la liste des tableaux 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 des tableaux contient un objet de type de données défini par L'utilisateur.

Follow this below Link 

comment comparer les attributs D'objets dans un ArrayList?

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

0
répondu Aman Goyal 2018-01-17 12:40:34
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");         
        }
    } 
}
0
répondu Prasanth R i-loads Testing Eng 2018-03-26 07:21:29

Nous pouvons utiliser contains méthode pour vérifier si un élément existe que si nous avons fourni à la mise en œuvre de equals et hashCode d'autre objet de référence sera utilisé pour la comparaison d'égalité. Aussi dans le cas d'une liste contains est O(n) opération où comme il est O(1) pour HashSet donc mieux à utiliser plus tard. En Java 8, nous pouvons également utiliser des flux pour vérifier un élément sur la base de son égalité ou sur la base 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
0
répondu i_am_zero 2018-08-14 09:12:20