İçeriğe geç

Verimsiz üyelik kontrolü (ARCH4075)

Anahtar java.performance.inefficient-membership-test · Önem warning · Kategori performance

List.contains her çağrıda doğrusal tarama yapar. Bir döngü içinde tekrarlanan üyelik kontrolleri karesel maliyete dönüşür; HashSet araması sabit zamanlıdır.

List<String> blocked = loadBlocked();
for (String user : users) {
if (blocked.contains(user)) {
reject(user);
}
}
Set<String> blocked = new HashSet<>(loadBlocked());
for (String user : users) {
if (blocked.contains(user)) {
reject(user);
}
}

Tekrarlanan üyelik kontrolleri için listeyi bir HashSet’e dönüştürün.