Java 数据结构
我整理了一份关于在Java数据结构中可能用到的内容的备忘录,包括标准库以及其他一些,如Guava等。
java.util.List – Java的列表实用工具。
-
- 順序を持つ
- 重複要素を許可
动态数组
-
- 内部的には配列
-
- 挿入、削除はその要素以降の要素の再配置が行われるため遅い
- 追加やget(index)は速い
链表
-
- 数珠つなぎ構造
-
- get(index)は遅い
- 挿入、削除が速い
org.apache.commons.collections4.list.TreeList 可以改为:”org.apache.commons.collections4.list.TreeList 是一个类库。”
-
- 挿入、削除が速い
-
- 追加やget(index)も速いが、ArrayList には劣る
-
- 挿入・削除が多い場合は LinkedList より TreeList を選択したほうが大抵良いらしい。
- AVL tree で実装されている
Java工具集合
-
- 重複要素を持たない
- 順序を保証しない
哈希集合
- 順序を保持しない
树集合
-
- ソートされた順序を保持する。自然順序か指定された Comparator の昇順。
- Red-Black tree で実装されている
LinkedHashSet – 链接HashSet
- 順序は挿入順
“`
Java工具包中的Map接口
“`
-
- key と value が対になった要素を持つ。
-
- key の重複は許可されない。
- 順序を保証しない
哈希映射
- 順序を保持しない
红黑树.
-
- key がソートされた順序を保持する。自然順序か指定された Comparator の昇順。
- Red-Black tree で実装されている
LinkedHashMap可以将键值对按照插入顺序进行排序。
- key の順序は挿入順。アクセス順にすることもできる。
com.google.common.collect.BiMap
谷歌常见收集双向映射
-
- value もユニークである Map
-
- BiMap#inverse で key と value を入れ替えることができる
- HashBiMap、EnumHashBiMap、EnumBiMap がある
多重集合 (包) 包含在 com.google.common.collect 包中。
-
- 重複を許可した Set のようなもの
-
- 重複要素の数をカウントするのに便利
-
- Bag と呼ばれるものと同じ。org.apache.commons.collections4.Bag など。
-
- Set のように扱えるが Set は継承していない
- HashMultiset、TreeMultiset、LinkedHashMultiset、EnumMultiset がある
谷歌的常见集合Multimap
-
- key 重複を許可した Map のようなもの
-
- Map に似ているが key – value が1対多
Map<key, Collection> の扱いやすい版
Map は継承していない
ListMultimap系、SetMultimap系 などがある
谷歌通用集合框架中的Table
Table<row, column, value> というテーブル構造
key が2次元になった Map のようなもの
Map<key1, Map<key2, value>> の扱いやすい版
ArrayTable、HashBasedTable、TreeBasedTable がある
堆栈
-
- 先入れ後出し(First-In Last-Out, FILO)のデータ構造
- java.util.Stack や、java.util. Deque の様々な実装を stack として使用できる
队伍
-
- 先入れ先出し (First-In First-Out, FIFO)のデータ構造
- PriorityQueue, BlockingQueue など、java.util.Queue の様々な派生がある