Java Collections Framework 구현: Big-O 요약
"Java 단기 집중 강좌"를 가르칠 때 다음 사항을 알고 있어야 합니다. 다양한 컬렉션 구현과 관련된 Big-O 시간 복잡도. 청중은 Big-O 표기법에 익숙할 수 있지만 특정 컬렉션에 대한 다양한 작업의 구체적인 복잡성을 알 가능성은 거의 없습니다.
다행히도 "Java Generics and Collections"라는 책은 이러한 복잡성에 대한 귀중한 통찰력을 제공합니다. . 이 글은 책의 정보를 요약하여 각 컬렉션 유형(목록, 세트, 맵, 큐)에 대한 자세한 표를 제공합니다.
목록 구현:
Operation | ArrayList | LinkedList | CopyOnWriteArrayList |
---|---|---|---|
get | O(1) | O(n) | O(1) |
add | O(1) | O(1) | O(n) |
contains | O(n) | O(n) | O(n) |
next | O(1) | O(1) | O(1) |
remove(0) | O(n) | O(1) | O(n) |
iterator.remove | O(n) | O(1) | O(n) |
구현 설정:
Operation | HashSet | LinkedHashSet | CopyOnWriteArraySet | EnumSet | TreeSet | ConcurrentSkipListSet |
---|---|---|---|---|---|---|
add | O(1) | O(1) | O(n) | O(1) | O(log n) | O(log n) |
contains | O(1) | O(1) | O(n) | O(1) | O(log n) | O(log n) |
next | O(h/n) | O(1) | O(1) | O(1) | O(log n) | O(1) |
Notes | h is the table capacity |
맵 구현:
Operation | HashMap | LinkedHashMap | IdentityHashMap | EnumMap | TreeMap | ConcurrentHashMap | ConcurrentSkipListMap |
---|---|---|---|---|---|---|---|
get | O(1) | O(1) | O(1) | O(1) | O(log n) | O(1) | O(log n) |
containsKey | O(1) | O(1) | O(1) | O(1) | O(log n) | O(1) | O(log n) |
next | O(h/n) | O(1) | O(h/n) | O(1) | O(log n) | O(h/n) | O(1) |
Notes | h is the table capacity |
대기열 구현:
Operation | PriorityQueue | ConcurrentLinkedQueue | ArrayBlockingQueue | LinkedBlockingQueue | PriorityBlockingQueue | DelayQueue | LinkedList | ArrayDeque | LinkedBlockingDeque |
---|---|---|---|---|---|---|---|---|---|
offer | O(log n) | O(1) | O(1) | O(1) | O(log n) | O(log n) | O(1) | O(1) | O(1) |
peek | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) |
poll | O(log n) | O(1) | O(1) | O(1) | O(log n) | O(log n) | O(1) | O(1) | O(1) |
size | O(1) | O(n) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) |
위 내용은 기사 제목은 다음과 같아야 합니다. Java 컬렉션 구현의 Big-O 시간 복잡성은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!