Chcę sprawdzić, czy kolekcja jest pusta i null
. Czy ktoś mógłby dać mi znać najlepszą praktykę.
Obecnie sprawdzam jak poniżej:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
java
collections
użytkownik1635014
źródło
źródło
null == sampleMap
a niesampleMap == null
. Większość ludzi uważa, że ten drugi jest bardziej czytelny - ten pierwszy jest pozostałością po innych językach.See Effective Java: Item 43 - Return empty arrays or collections, not nulls.
if (null = sampleMap)
w Javie, pojawi się błąd kompilacji. Właśnie o to chodzi w moim pierwszym komentarzu. „Powód” jest specyficzny dla danego języka, ale został rozpowszechniony na inne języki pomimo kary za czytelność, ponieważ ludzie nie zastanawiali się, dlaczego to robią.Odpowiedzi:
Jeśli używasz biblioteki Apache Commons Kolekcje w swoim projekcie, możesz użyć metod
CollectionUtils.isEmpty
iMapUtils.isEmpty()
, które odpowiednio sprawdzają, czy kolekcja lub mapa jest pusta, czy pusta (tzn. Czy są „zerowo bezpieczne”).Kod tych metod jest mniej więcej tym, co napisał użytkownik @icza w swojej odpowiedzi.
Niezależnie od tego, co robisz, pamiętaj, że im mniej kodu piszesz, tym mniej kodu musisz przetestować, ponieważ złożoność kodu maleje.
źródło
isNullOrEmpty
.To najlepszy sposób, aby to sprawdzić. Możesz napisać metodę pomocniczą, aby to zrobić:
źródło
Map<?>
.||
Operator jest operatorem zwarciowym, co oznacza, że jeśli lewy operand jesttrue
, nie oceni właściwego operandu. Więc jeślim == null
, tom.isEmpty()
nie zostanie wywołany (niepotrzebny, wynik jesttrue
).Jeśli używasz ram Spring, możesz użyć
CollectionUtils
do sprawdzenia zarówno kolekcji (lista, tablica), jak i mapy itp.źródło
Osobiście wolę używać pustych kolekcji zamiast
null
i mieć algorytmy działające w taki sposób, że dla algorytmu nie ma znaczenia, czy kolekcja jest pusta, czy nie.źródło
Kiedy używasz wiosny, możesz użyć
gdzie obj to dowolna [mapa, kolekcja, tablica, wszystko ...]
w przeciwnym razie: kod to:
dla String najlepiej jest:
źródło
Jeśli chcesz sprawdzić wartość null, to jest właśnie ten sposób. Jeśli jednak masz nad tym kontrolę, po prostu zwróć pustą kolekcję, kiedy tylko możesz, i sprawdź tylko później, czy jest pusta.
Wątek ten dotyczy mniej więcej tego samego języka C #, ale zasady dotyczą równie dobrze Java. Jak wspomniano powyżej, wartość null powinna zostać zwrócona tylko wtedy, gdy
źródło
Możesz użyć metody
org.apache.commons.lang.Validate
„ notEmpty ”:Validate.notEmpty(myCollection)
-> Sprawdź, czy podana kolekcja argumentów nie ma wartości null ani nie ma wartości zero (brak elementów); w przeciwnym razie zgłasza wyjątek.źródło
Sprawdzimy, czy obiekt Collection jest pusty, zerowy lub nie. wszystkie te metody podane poniżej znajdują się w pakiecie org.apache.commons.collections4.CollectionUtils.
Sprawdź na liście lub ustaw typ kolekcji obiektów.
Sprawdź typ obiektów na mapie.
Zwrócony typ wszystkich metod ma wartość logiczną.
źródło
Dla wszystkich kolekcji, w tym mapy użyj:
isEmpty
metody, która znajduje się na tych obiektach kolekcji. Ale musisz zrobić kontrolę zerową przed:źródło