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
Java에서 null과 빈 배열은 동일한 개념이 아닙니다. 배열이 비어 있는지 확인하려면 다음과 같이 작성하면 됩니다.
`
if (map.get(a) == null || map.get(a).size() == 0)
`
제작 환경이라면
apache common
등의 툴 클래스를 사용하는 것이 좋으며, 스프링에서 제공하는CollectionUtils.isEmpty(map.get(a))
高洛峰2017-04-18 09:09:32
ArrayList가 인스턴스화되면 확실히 null이 아닙니다.
toString 메소드는 오류 보고 없이 실행될 수 있으므로 인스턴스화되어야 합니다. toString은 최상위 상위 클래스 Object의 메소드이므로 인스턴스화되지 않은 객체가 어떻게 이 메소드를 가질 수 있습니까?
PHP中文网2017-04-18 09:09:32
출력한 결과a**[]
를 보면 map.get(a).toString()
가 빈 문자열이 아니고 []
이므로 "[]".equals("")
은 항상 false
map.get(a).toString()
이 null 포인터 예외를 발생시키지 않으면 map.get(a)
은 null이 아니어야 합니다
키에 해당하는 값이 항상 ArrayList인 경우 다음 방법을 사용할 수 있습니다.
으아악