2012-07-10 14 views
8

Zakładając, że chcesz realizować wyznaczone koncepcje teoretyczne, takie jak element, set, collection i relation w Java: Jak byś reprezentują zbiór pusty?Jak zaimplementować pusty zestaw - ∅?

Czy wprowadzam w błąd, jeśli pomyślę o koncepcji NULL, ponieważ jest ona używana przez trójwartościową logikę baz danych?

+4

Nie jestem pewien, czy istnieje jednoznaczna odpowiedź na to pytanie; zależy to od tego, co chcesz osiągnąć. Oczywistą odpowiedzią jest "użyj pustego" Seta ", ale" NULL "może być również odpowiedni w zależności od tego, co robisz. –

+4

Istnieją niezliczone sposoby reprezentowania pustego zestawu, w zależności od zamierzonej aplikacji. 'Set = new HashSet ()' jest jednym z najprostszych. –

+4

Collections.emptySet() przychodzi na myśl ... –

Odpowiedz

27

Zastosowanie Collections.emptySet():

Zwraca zbiór pusty (niezmienna). Ten zestaw można serializować. W przeciwieństwie do pola o tej samej nazwie, ta metoda jest sparametryzowana. Ten przykład ilustruje typ bezpieczny sposób, aby uzyskać pusty zestaw:

Set<String> s = Collections.emptySet(); 

realizacji Uwaga: Implementacje tej metody nie musi utworzyć oddzielny zestaw obiektu dla każdego połączenia. Korzystanie z tej metody prawdopodobnie będzie kosztować porównywalne do przy użyciu pola o tej samej nazwie. (W przeciwieństwie do tej metody, pole nie zapewnienia bezpieczeństwa typ.)

+0

Dziękuję za sugestię. Posłużę się twoją radą. – M4TT4CK

8

Korzystanie null reprezentuje zbiór pusty jest zły pomysł. A null nie zachowuje się jak Set, ponieważ (oczywiście) wszystkie próby wykonania na nim operacji spowodują wyświetlenie NullPointerException. Oznacza to, że jeśli użyjesz null do oznaczenia pustego zestawu, kod będzie zaśmiecony testami dla null ... a jeśli go przegapisz, masz błąd.

Rozwiązaniem jest użycie Collections.emptySet(), jeśli chcesz niezmienny pusty zestaw, lub utworzyć instancję odpowiedniej klasy Set, jeśli chcesz zestaw zmienny, który zaczyna się pusty.

+0

+1 za stwierdzenie, dlaczego wartość zerowa jest złym pomysłem. –