2013-03-31 13 views
8

Bir item ürününün item set adresinde var olup olmadığını kontrol etmek istiyorum.Java Python 'in' eşdeğeri - set üyelik testi için?

Ben java bunu yapmak istiyorum:

def is_item_in_set(item, item_set): 
    if item in item_set: 
     return true 
    else: 
     return false 

(.. Benim piton pythonic değilse Sadece benim niyet ifade etmek istedim Özür)

ben başardınız yazma bu :

boolean isItemInSet(String item, String[] itemSet) { 
    for(int i =0; i < itemSet.length; ++i) { 
     if(item.equals(itemSet[i])) { 
      return true; 
     } 
    } 
    return false; 
} 

test set üyelik için daha iyi bir yolu var mı Java?

+0

Bu iki kod parçası eşdeğer değil. – Cairnarvon

+0

Şimdi mi? .contains() 'a başvurdun mu? Ben onu .equals() ile değiştirdim. –

+4

Python'unuzda bir anti-desen var, neden sadece 'item_set' içinde öğe döndürün? Aynı örnek, aynı örnekle aynı değildir, Python örneği O (1) iken, O (n). –

cevap

12

Düz bir diziyle bunu yapamazsınız, ancaknumaralı telefonu .contains numaralı telefonu arayarak yapabilirsiniz. Eğer çok fazla isItemInSet çağrı yapacak gibi hissediyorsanız, diziler yerine Set s kullanmayı düşünün - çok daha mutlu olacaksınız. Örneğin, HashSet<T> kullanılarak, isItemInSet ve bir O (1) işlemi yapılır (ortalama olarak). Set ekleme ve silme de benzer şekilde hızlıdır. Gerçekten de, Java'da bir HashSet<T> aslında bir Python set() ile aynıdır (benzer temel konsept ve performans özellikleri) - sette sorgulama, ekleme veya silme gibi birçok çağrıyla hızda büyük bir gelişme göreceksiniz.

+0

" Setini" kontrol edecek! –

+4

" Set" ifadesinin bir arabirim olduğunu unutmayın. HashSet '(çoğu kullanım için önerilir) gibi bir uygulama alt sınıfını kullanmak isteyeceksiniz. – nneonneo

+0

:) "HashSet " işlevini aldığım anda kabul ediyorum! –