Scannerに書き込まれた値が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();
ArrayList.contains(desiredElement) を使用するだけです。例えば、あなたがあなたの例からconta1アカウントを探しているなら、あなたは以下のようなものを使うことができます:
if (lista.contains(conta1)) {
System.out.println("Account found");
} else {
System.out.println("Account not found");
}
編集:これを機能させるには、 equals()を正しくオーバーライドする必要があることに注意してください および hashCode() メソッド。 Eclipse IDEを使用している場合は、最初にCurrentAccount
オブジェクトのソースファイルを開いてSource > Generate hashCode() and equals()...
を選択することで、これらのメソッドを生成できます。
値の存在をチェックしているときは、HashSet
よりArrayList
を使用するほうがよいでしょう。 HashSet
のためのJavaドキュメントは言う"This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
はあなたが探しているインスタンスを見つけるためにリスト全体を繰り返す必要があるかもしれません。
List
メソッドを上書きするだけでequals
メソッドを繰り返す必要はありません。
==
の代わりにequals
を使用する
@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;
}
このようにそれを呼ぶ:
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));
}
contains
とequals
の実装を提供していれば、hashCode
メソッドを使用して項目が存在するかどうかをチェックできます。オブジェクト参照は等価比較に使用されます。リストの場合もcontains
はO(n)
操作です。HashSet
はO(1)
なので、後で使うほうがよいでしょう。 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
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");
}
}
}
.contains
を使うだけです。たとえば、ArrayListのarr
に値val
が含まれているかどうかをチェックしている場合は、単純にarr.contains(val)
を実行します。これは、値が含まれているかどうかを表すブール値を返します。詳しくは、.contains
の ドキュメント をご覧ください。
Array ListがPrimitive DataTypeのオブジェクトを含む場合.
Use this function:
arrayList.contains(value);
if list contains that value then it will return true else false.
配列リストにUserDefined DataTypeのオブジェクトが含まれる場合.
Follow this below Link
ArrayList内のObjects属性を比較するにはどうすればよいですか?
この解決策がお役に立てば幸いです。ありがとう