Java Collections Framework 実装の Big-O 表記法
さまざまな Java Collections Framework 実装の Big-O 操作順序を理解することが重要になるのは、特定のタスクに適切なデータ構造を選択します。
List 実装
- ArrayList: O(1) for get、add、contains、および iterator.remove ; O(n) は、remove(0)
- LinkedList の場合: O(n) は get、O(1) は add、contains、remove(0) の場合、O(1) は iterator.remove
の場合- CopyOnWriteArrayList: O(1) は get、O(n) は add、contains、remove(0)、O(n) は iterator.remove です
Set 実装
- HashSet: O(1) 追加と次の場合 O(h/n) (h はテーブル容量)
- LinkedHashSet: O(1)すべての操作の場合
- CopyOnWriteArraySet: O(n) for add and contains、次の場合 O(1)
- EnumSet: O(1) すべての操作の場合
- TreeSet: O (log n) のすべての操作
- ConcurrentSkipListSet: O(log n) のすべての操作
Map 実装
- HashMap : get および containsKey の場合は O(1)、next の場合は O(h/n) (h はテーブルの容量)
- LinkedHashMap: すべての操作の場合は O(1)
- IdentityHashMap: O get および containsKey の場合は (1)、next の場合は O(h/n) (h はテーブル容量)
- EnumMap: すべての操作の場合は O(1)
- TreeMap: O(log n) すべての操作の
- ConcurrentHashMap: get および containsKey の場合は O(1)、next の場合は O(h/n) (h はテーブル容量)
- ConcurrentSkipListMap: O(log n ) すべての操作
キュー実装
- PriorityQueue: オファーとポーリングの場合は O(log n)、ピークとサイズの場合は O(1)
- ConcurrentLinkedQueue: すべての操作の場合は O(1)
- ArrayBlockingQueue: オファー、ピーク、ポーリングの場合は O(1)、サイズの場合は O(1)
- LinkedBlockingQueue: O (1) オファー、ピーク、およびポーリング、O(1) サイズ
- PriorityBlockingQueue: O(log n) オファーおよびポーリング、O(1) ピークおよびサイズ
- DelayQueue : オファーとポーリングの場合は O(log n)、ピークとサイズの場合は O(1)
- LinkedList: すべての操作の場合は O(1)
- ArrayDeque: すべての操作の場合は O(1)
- LinkedBlockingDeque: すべての操作の O(1)
追加リソース
すべての Java Collections Framework の包括的な概要表と注釈付きの概要について実装については、次のリソースを参照してください。
- コレクションの概要: https://docs.oracle.com/javase/tutorial/collections/intro/index.html
- 注釈付きの概要: https://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html
以上がさまざまな Java Collections Framework 実装の Big-O の複雑さはパフォーマンスにどのような影響を与え、データ構造の選択に影響を与えるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。