Maison > Questions et réponses > le corps du texte
System.out.println("a**"+map.get(a).getClass());
System.out.println("a**"+map.get(a));
-------------分割线------------
a**class java.util.ArrayList
a**[]
以上是控制台打印出来的东西。
map.get(a).toString().equals("");一直是false
map.get(a)!=null;一直是true
PHP中文网2017-04-18 09:09:32
En Java, les tableaux nuls et vides ne sont pas le même concept. Si vous souhaitez déterminer si le tableau est vide, vous pouvez l'écrire comme ceci.
`
if (map.get(a) == null || map.get(a).size() == 0)
`
S'il s'agit d'un environnement de production, il est recommandé d'utiliser des classes d'outils, telles que
apache common
ou Spring ProvidesCollectionUtils.isEmpty(map.get(a))
高洛峰2017-04-18 09:09:32
Si une ArrayList a été instanciée, elle n'est certainement pas égale à null.
Puisque la méthode toString peut être exécutée sans signaler d'erreur, elle doit avoir été instanciée. Étant donné que toString est une méthode de la classe parent de niveau supérieur Object, comment un objet non instancié peut-il avoir cette méthode.
ArrayList list = new ArrayList();
System.out.println(list == null); // false
ArrayList list1 = null;
System.out.println(list1.toString()); // 空指针
PHP中文网2017-04-18 09:09:32
Le résultat que vous avez impriméa**[]
montre que map.get(a).toString()
n'est pas une chaîne vide, mais []
, donc "[]".equals("")
est toujours faux
Si map.get(a).toString()
ne lève pas d'exception de pointeur nul, alors map.get(a)
doit être non nul
Si la valeur correspondant à la clé est toujours une ArrayList, alors la méthode suivante peut être utilisée :
map.get(a) == null || map.get(a).isEmpty()