STL
今天在看STL,它主要分成序列式容器和关联式容器。
- 序列式容器:主要有 vector, list, deque, stack, queue, heap
- 关联式容器:每个元素都有一个key-value对,容器内部按照键值的大小,以某个规则将这个元素放到适当的位置。
- RB-tree:Set, Map, MultiSet, MultiMap : 可自动排序
- HashTable: HashSet, HashMap, MultiHashSet, MultiHashMap
他们的特点就是:
- Map与Set:Map是有实值(Value)和键值(Key)的,而Set只有实值。
- Hash…:单纯的Set和Map是由RBTree实现的,因此所有的元素都会根据键值进行排序;而Hash…系列则由于底层是HashTable实现的,因此是乱序的。
- Multi-:不带Multi前缀的是不允许键值重复的,可以说自带去重功能;而带这个前缀的则允许键值重复。
JSTL
上面都是说的C++,我们再来看一下Java对应的JSTL。
JSTL是对C++ STL的一个衍生,这些功能封装在Java.util包内,主要包括
- Collection
- List
- LinkedList
- ArrayList
- Vector
- Stack
- Set <
- List