Java에서 컬렉션이 비어 있는지 확인 : 가장 좋은 방법은 무엇입니까?
목록이 비어 있는지 확인하는 두 가지 방법이 있습니다.
if (CollectionUtils.isNotEmpty(listName))
과
if (listName != null && listName.size() != 0)
내 아치는 전자가 후자보다 낫다고 말해줍니다. 하지만 후자가 더 낫다고 생각합니다.
누구든지 그것을 명확히 할 수 있습니까?
당신이해야 절대적으로 사용합니다 isEmpty()
. size()
임의의 목록을 계산하는 것은 비용이 많이들 수 있습니다. 심지어는 어떤 요소가 있는지 여부를 검증 할 수 물론, 비용이 많이들 수 있지만, 위해 더 최적화가 없다 size()
할 수없는 도 만들 isEmpty()
반대 경우가있는 반면, 빨리가.
예를 들어, 연결리스트 구조 있다고 가정 하지 않은 크기를 (반면 캐시를 LinkedList<E>
않습니다 ). 그러면 size()
O (N) 연산이되는 반면 isEmpty()
여전히 O(1)
.
또한 사용 isEmpty()
하면 실제로 관심이있는 내용이 더 명확하게 표시됩니다.
CollectionUtils.isNotEmpty
컬렉션이 null이 아니고 비어 있지 않은지 확인합니다. 이것은 재확인에 비해 더 좋지만 프로젝트에이 Apache 라이브러리가있는 경우에만 가능합니다. 그렇지 않은 경우 다음을 사용하십시오.
if(list != null && !list.isEmpty())
CollectionUtils를 이미 사용하고 있지 않다면 List.isEmpty()
종속성이 적습니다.
성능면에서 CollectionUtils는 약간 느려질 것입니다. 기본적으로 동일한 논리를 따르지만 추가 오버 헤드가 있기 때문입니다.
따라서 가독성 대 성능 대 종속성이 될 것입니다. 그래도 큰 차이는 아닙니다.
if (CollectionUtils.isNotEmpty(listName))
와 같다:
if(listName != null && !listName.isEmpty())
첫 번째 접근 방식에서는 listName
null이 될 수 있으며 null 포인터 예외가 throw되지 않습니다. 두 번째 방법에서는 수동으로 null을 확인해야합니다. 첫 번째 접근 방식은 작업이 덜 필요하기 때문에 더 좋습니다. 사용 .size() != 0
은 전혀 불필요한 일이며 사용하는 것보다 느리다는 것을 배웠습니다..isEmpty()
프로젝트에 Apache 공통 유틸리티가있는 경우 첫 번째 유틸리티를 사용하십시오. 더 짧고 후자와 정확히 동일하기 때문입니다. 두 방법 사이에 차이는 없지만 소스 코드 내부에서 어떻게 보이는지.
또한 사용하여 빈 수표
listName.size() != 0
모든 컬렉션 구현에는
listName.isEmpty()
똑같은 기능을합니다.
그래서 대체로 클래스 경로에 Apache 공통 유틸리티가 있다면
if (CollectionUtils.isNotEmpty(listName))
다른 경우에 사용
if(listName != null && listName.isEmpty())
성능 차이를 느끼지 못할 것입니다. 두 줄 모두 정확히 동일합니다.
Apache Commons의 CollectionUtils.isNotEmpty (Collection)은 NULL-SAFE 검사입니다.
TRUE를 반환하면 컬렉션 / 목록이 비어 있지 않고 null이 아닙니다. 컬렉션이 Null이면 FALSE를 반환합니다.
예:
List<String> properties = new ArrayList();
...
if (CollectionUtils.isNotEmpty(properties)) {
// process the list
} else {
// list is null or empty
}
이것이 실제로 중요한 부분의 좋은 예는 다음 과 같은 JDK 의 ConcurrentSkipListSet
구현 입니다.
대부분의 컬렉션과 달리 size 메서드는 일정 시간 작업이 아닙니다.
이것은 isEmpty()
확인하는 것보다 훨씬 효율적인 명확한 경우 size()==0
입니다.
일부 컬렉션에서 왜 그런지 직관적으로 알 수 있습니다. 요소를 계산하기 위해 전체를 가로 질러야하는 구조라면 비어 있는지 여부 만 알고 싶은 경우 첫 번째 요소를 찾으면 바로 멈출 수 있습니다.
사용 CollectionUtils.isEmpty (컬렉션 콜)
지정된 컬렉션이 비어있는 경우 Null-safe 검사입니다. Null은 true를 반환합니다.
매개 변수 : coll-확인할 컬렉션, null 일 수 있음
반환 : 비어 있거나 null 인 경우 true
isEmpty()
Returns true if this list contains no elements.
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html
첫 번째를 사용합니다. 그것이 무엇을하는지 즉시 보는 것은 분명합니다. 여기에 null 검사가 필요하다고 생각하지 않습니다.
To Check collection is empty, you can use method: .count(). Example:
DBCollection collection = mMongoOperation.getCollection("sequence");
if(collection.count() == 0) {
SequenceId sequenceId = new SequenceId("id", 0);
mMongoOperation.save(sequenceId);
}
'developer tip' 카테고리의 다른 글
Java에서 이미지를 자르려면 어떻게합니까? (0) | 2020.11.06 |
---|---|
앵커를 숨기지 않고 앵커 텍스트를 숨기려면 어떻게합니까 (0) | 2020.11.06 |
gcc / g ++ :“해당 파일 또는 디렉토리 없음” (0) | 2020.11.05 |
Windows 용 Docker가 작동하지 않음 (0) | 2020.11.05 |
Angular 2 : 부모 구성 요소에서 RouteParams 가져 오기 (0) | 2020.11.05 |