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