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 の様々な派生がある
广告
将在 10 秒后关闭
bannerAds