2016-06-30 12 views
5

Z Javadoc dla deque:Dlaczego możemy dodawać wartości null do LinkedList DESPITE, stanowiąc silne zniechęcenie do robienia tego w interfejsie Deque?

Choć implementacje deque nie są ściśle wymagane do zakazania umieszczania elementów null, są zachęcani, aby to zrobić. Użytkownicy wszelkich implementacji Deque, które dopuszczają elementy null są silnie zachęcani, aby nie wykorzystywać możliwości wstawiania wartości null. Dzieje się tak dlatego, że wartość null jest używana jako specjalna wartość zwracana różnymi metodami, aby wskazać, że maska ​​jest pusta.

nie mogę znaleźć odpowiedzi w istniejącym pytanie: Why can we add null elements to a java LinkedList?

+1

Myślę, że cytowana powyżej JavaDoc dobrze to podsumowuje: 'null' powinno być zarezerwowane jako specjalna wartość wskazująca, że ​​brakuje wartości lub coś jest puste. Większość kolekcji _do_ zezwala na wartości null, ale zaleca się nie dodawać ich. –

+0

Warto również zauważyć, że 'ListedList' jest także' List', który * zwykle *, przynajmniej dla większości, jeśli nie wszystkich implementacji Java SE 'List', dopuszcza wartości null. – kazenorin

+0

@frostmann, czy chcesz zaakceptować tę odpowiedź? –

Odpowiedz

2

Takie przepisy mogą dokonywać programiści życie łatwiejszym. Mogę wymyślić przykład.

Załóżmy, że istnieje powiązana lista domów i pracownik poczty przychodzi, aby dostarczyć listy do każdego domu po kolei. Każdy węzeł w usłudze linku linkList. Domy mają wartość rodzinną jako ich wartość. W niektórych przypadkach rodzina może nie istnieć, wtedy obiekt domowy będzie miał wartość pustą.

Ale dla listonosza nie ma to znaczenia, ponieważ musi jeszcze odwiedzić ten węzeł. PostOffice ma sugestię dla wszystkich rodzin, aby wskazały pocztę, jeśli opuszczają dom, aby postman nie musiał odwiedzać tego domu (jeśli to możliwe).

Ale dla niektórych celów właściciel domu decyduje się nie informować o tym fakcie PostOffice i chce kontynuować przyjmowanie listów (pośrednio wizyta listonosza).