Quero verificar se uma coleção está vazia e null
. Alguém poderia me informar sobre as melhores práticas.
Atualmente, estou verificando como abaixo:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
java
collections
user1635014
fonte
fonte
null == sampleMap
e nãosampleMap == null
. A maioria das pessoas considera o último mais legível - o primeiro é um resquício de outras línguas.See Effective Java: Item 43 - Return empty arrays or collections, not nulls.
if (null = sampleMap)
em Java, receberá um erro de compilação. Esse é precisamente o objetivo do meu primeiro comentário. A "razão" para isso é específica do idioma, mas foi propagada para outros idiomas, apesar da penalidade de legibilidade, porque as pessoas não consideraram o porquê disso.Respostas:
Se você usar a biblioteca Apache Commons Collections em seu projeto, poderá usar os métodos
CollectionUtils.isEmpty
eMapUtils.isEmpty()
que, respectivamente, verificam se uma coleção ou um mapa está vazio ou nulo (ou seja, eles são "seguros para nulos").O código por trás desses métodos é mais ou menos o que o usuário @icza escreveu em sua resposta.
Independentemente do que você faz, lembre-se de que quanto menos código você escreve, menos código você precisa testar à medida que a complexidade do seu código diminui.
fonte
isNullOrEmpty
.Essa é a melhor maneira de verificar isso. Você pode escrever um método auxiliar para fazer isso:
fonte
Map<?>
.||
operador é um operador de curto-circuito, ou seja, se o operando esquerdo estivertrue
, ele não avaliará o operando direito. Portantom == null
,m.isEmpty()
se não for chamado (não é necessário, o resultado étrue
).Se você usa estruturas Spring, pode usar
CollectionUtils
para verificar as coleções (lista, matriz) e mapa etc.fonte
Pessoalmente, prefiro usar coleções vazias em vez de
null
fazer com que os algoritmos funcionem de uma maneira que, para o algoritmo, não importa se a coleção está vazia ou não.fonte
Quando você usa a primavera, pode usar
onde obj é qualquer [mapa, coleção, array, tudo ...]
caso contrário: o código é:
para String melhor é:
fonte
Se você precisar procurar nulo, é esse o caminho. No entanto, se você tiver controle sobre isso, basta retornar a coleção vazia, sempre que puder, e verificar apenas a vazio posteriormente.
Esse encadeamento é quase o mesmo com o C #, mas os princípios se aplicam igualmente ao java. Como mencionado, null deve ser retornado apenas se
fonte
Você pode usar
org.apache.commons.lang.Validate
o método " notEmpty ":Validate.notEmpty(myCollection)
-> Valide que a coleção de argumentos especificada não é nula nem tem tamanho zero (sem elementos); caso contrário, lançando uma exceção.fonte
Verificaremos se um objeto de coleção está vazio, nulo ou não. todos esses métodos fornecidos abaixo estão presentes no pacote org.apache.commons.collections4.CollectionUtils.
Verifique na lista ou defina o tipo de coleção de objetos.
Verifique no tipo de mapa objetos.
O tipo de retorno de todos os métodos é booleano.
fonte
Para todas as coleções, incluindo map use:
isEmpty
method, que existe nesses objetos de coleção. Mas você precisa fazer uma verificação nula antes:fonte