System.out.println("a**"+map.get(a).getClass());System.out.println("a**"+map.get(a));
-------------分割线------------a**class java.util.ArrayLista**[]
以上是控制台打印出来的东西。
map.get(a).toString().equals("");一直是falsemap.get(a)!=null;一直是true
ringa_lee
if(map.get(a)==null)빈지 알 수 없나요?
if(map.get(a)==null)
Java에서 null과 빈 배열은 동일한 개념이 아닙니다. 배열이 비어 있는지 확인하려면 다음과 같이 작성하면 됩니다.
`if (map.get(a) == null || map.get(a).size() == 0)`
제작 환경이라면 apache common 등의 툴 클래스를 사용하는 것이 좋으며, 스프링에서 제공하는 CollectionUtils.isEmpty(map.get(a))
apache common
CollectionUtils.isEmpty(map.get(a))
ArrayList가 인스턴스화되면 확실히 null이 아닙니다. toString 메소드는 오류 보고 없이 실행될 수 있으므로 인스턴스화되어야 합니다. toString은 최상위 상위 클래스 Object의 메소드이므로 인스턴스화되지 않은 객체가 어떻게 이 메소드를 가질 수 있습니까?
출력한 결과a**[]를 보면 map.get(a).toString()가 빈 문자열이 아니고 []이므로 "[]".equals("")은 항상 false
a**[]
map.get(a).toString()
[]
"[]".equals("")
map.get(a).toString()이 null 포인터 예외를 발생시키지 않으면 map.get(a)은 null이 아니어야 합니다
map.get(a)
키에 해당하는 값이 항상 ArrayList인 경우 다음 방법을 사용할 수 있습니다.
if(map.get(a)==null)
빈지 알 수 없나요?Java에서 null과 빈 배열은 동일한 개념이 아닙니다. 배열이 비어 있는지 확인하려면 다음과 같이 작성하면 됩니다.
`
if (map.get(a) == null || map.get(a).size() == 0)
`
ArrayList가 인스턴스화되면 확실히 null이 아닙니다.
으아악toString 메소드는 오류 보고 없이 실행될 수 있으므로 인스턴스화되어야 합니다. toString은 최상위 상위 클래스 Object의 메소드이므로 인스턴스화되지 않은 객체가 어떻게 이 메소드를 가질 수 있습니까?
map.get(a).toString().equals(""); 항상 거짓
출력한 결과
임을 알 수 있습니다.a**[]
를 보면map.get(a).toString()
가 빈 문자열이 아니고[]
이므로"[]".equals("")
은 항상 falsemap.get(a)! =null; 항상 참
map.get(a).toString()
이 null 포인터 예외를 발생시키지 않으면map.get(a)
은 null이 아니어야 합니다빈 판사
키에 해당하는 값이 항상 ArrayList인 경우 다음 방법을 사용할 수 있습니다.
으아악