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();
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()...
.
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.
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));
}
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.
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
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
.
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