Bagaimana saya bisa mengecek apakah ada nilai yang tertulis dalam pemindai di 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();
Jawaban:
Cukup gunakan ArrayList.contains (diinginkanElement) . Misalnya, jika Anda mencari akun conta1 dari contoh Anda, Anda dapat menggunakan sesuatu seperti:
Sunting: Perhatikan bahwa agar ini berfungsi, Anda harus mengganti metode equals () dan hashCode () dengan benar . Jika Anda menggunakan Eclipse IDE, maka Anda dapat membuat metode ini dihasilkan dengan terlebih dahulu membuka file sumber untuk
CurrentAccount
objek Anda dan memilihSource > Generate hashCode() and equals()...
sumber
Lebih baik menggunakan a
HashSet
daripadaArrayList
ketika Anda memeriksa keberadaan suatu nilai. Java docs forHashSet
mengatakan:"This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
mungkin harus mengulangi seluruh daftar untuk menemukan contoh yang Anda cari.sumber
Silakan merujuk jawaban saya di posting ini .
Tidak perlu mengulangi
List
hanya menimpaequals
metode.Gunakan
equals
sebagai ganti==
Sebut saja seperti ini:
sumber
this.name.equals(employee.getName())
Kami dapat menggunakan
contains
metode untuk memeriksa apakah item ada jika kami telah menyediakan implementasiequals
danhashCode
referensi objek lain akan digunakan untuk perbandingan kesetaraan. Juga dalam kasus daftarcontains
adalahO(n)
operasi di mana karena ituO(1)
untukHashSet
lebih baik digunakan nanti. Di Java 8 kita bisa menggunakan stream juga untuk memeriksa item berdasarkan kesetaraannya atau berdasarkan properti tertentu.Java 8
sumber
boolean itemExistsBasedOnProp = selectedR.stream().map(Request::getDesc).anyMatch(cn::equals);
sekarang saya membutuhkannya untuk mengekstrak item itu! apa itu mungkin ??findAny
: docs.oracle.com/javase/8/docs/api/java/util/stream/…java.util.Collection#stream
Gunakan saja
.contains
. Misalnya, jika Anda memeriksa apakah ArrayListarr
berisi nilaival
, Anda hanya akan menjalankanarr.contains(val)
, yang akan mengembalikan boolean yang mewakili jika nilai tersebut terkandung. Untuk informasi lebih lanjut, lihat dokumen untuk.contains
.sumber
Ketika Daftar Array berisi objek tipe data primitif.
Ketika Daftar Array berisi objek dari DataType UserDefined.
Bagaimana cara membandingkan atribut Objek dalam ArrayList?
Saya harap solusi ini akan membantu Anda. Terima kasih
sumber
sumber