Hoe kan ik controleren of een waarde die in de scanner is geschreven, bestaat in een 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();
Antwoord 1, autoriteit 100%
Gebruik gewoon ArrayList.bevat(desiredElement). Als u bijvoorbeeld op zoek bent naar het conta1-account uit uw voorbeeld, kunt u zoiets gebruiken als:
if (lista.contains(conta1)) {
System.out.println("Account found");
} else {
System.out.println("Account not found");
}
Bewerken:
Merk op dat om dit te laten werken, u de gelijk aan()en hashCode()methoden. Als u Eclipse IDE gebruikt, kunt u deze methoden laten genereren door eerst het bronbestand voor uw CurrentAccount
-object te openen en Source > Generate hashCode() and equals()...
Antwoord 2, autoriteit 14%
Het is beter om een HashSet
te gebruiken dan een ArrayList
wanneer u controleert op het bestaan van een waarde.
Java-documenten voor HashSet
zeggen: "This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
moet mogelijk de hele lijst doorlopen om de instantie te vinden waarnaar u op zoek bent.
Antwoord 3, autoriteit 5%
Raadpleeg mijn antwoord op dit bericht.
Het is niet nodig om de List
te herhalen, gewoon de equals
-methode overschrijven.
Gebruik equals
in plaats van ==
@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;
}
Noem het zo:
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));
}
Antwoord 4, autoriteit 4%
We kunnen de methode contains
gebruiken om te controleren of een item bestaat als we de implementatie van equals
en hashCode
hebben gegeven, anders wordt de objectreferentie gebruikt voor gelijkheidsvergelijking. Ook in het geval van een lijst die contains
is O(n)
operatie waar het O(1)
is voor HashSet
dus beter om later te gebruiken. In Java 8 kunnen we streams ook gebruiken om items te controleren op gelijkheid of op basis van een specifieke eigenschap.
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
Antwoord 5
Gebruik gewoon .contains
. Als u bijvoorbeeld controleert of een ArrayList arr
een waarde val
bevat, voert u gewoon arr.contains(val)
uit, wat retourneer een boolean die aangeeft of de waarde is opgenomen. Zie voor meer informatie de docsvoor .contains
.
Antwoord 6
Als Array List een object van Primitive DataType bevat.
Use this function:
arrayList.contains(value);
if list contains that value then it will return true else false.
Als Array List een object van UserDefined DataType bevat.
Follow this below Link
Hoe kan ik Objects-kenmerken in een ArrayList vergelijken?
Ik hoop dat deze oplossing je zal helpen.
Bedankt
Antwoord 7
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");
}
}
}
Antwoord 8
Onderstaande code kan helpen
List<CurrentAccount> lista = new ArrayList<CurrentAccount>();
CurrentAccount conta5 = new CurrentAccount("Pedro Fonseca", 500);
boolean isAdded = lista.contains(model);
ArrayList heeft al dezelfde naam, dus het retourneert true
import com.google.gson.annotations.SerializedName;
import java.util.Objects;
public class CurrentAccount {
@SerializedName("Name")
private String name;
@SerializedName("Balance")
private int balance;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
public CurrentAccount(String name, int balance) {
this.name = name;
this.balance = balance;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CurrentAccount model = (CurrentAccount) o;
return name.equals(model.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}