- Vector(过时)和ArrayList类似,区别在于Vector是线程安全的,get,set方法都要加锁, 即使是在非并发环境下,效率较低。
- Stack(过时)满足“后进先出”规则,继承自Vector,缺点也同样继承了下来,不推荐使用,可以用LinkedList代替。
- peek():返回栈顶(索引最大)元素,不移除
- pop():返回并删除栈顶元素
- push():在栈顶追加元素
- ArrayList底层是使用数组实现的List,所以随机访问速度快,插入删除较慢,ArrayList比LinkedList更常用。
- toArray():把LinkedList转化为Array
- add():追加元素,或在指定位置插入,后面的元素右移
- set():设置指定索引的值
- get():返回指定索引的元素,不存在则抛出异常
- remove():删除指定索引或指定值的元素
- LinkedList是使用链表实现的List,在列表中插入和删除速度快,但是查找需要遍历整个链表,速度较慢。LinkedList提供了方法支持队列操作,并且实现了Queue接口,所以可以向上转型为Queue。
- 具有与Array基本相同的方法。
- Queue是一个满足“先进先出”的数据结构。
- offer():将一个元素追加到队尾(索引最大)
- peek():返回第一个元素,队列为空返回null
- element():返回第一个元素,队列为空抛出异常
- poll():移除并返回队首,队列为空返回null
- remove():移除指定值
- PriorityQueue是优先级队列,我们暂时先不介绍。
- Set代表的是数学上的集合的意思,所以set中的元素不可以重复。所以set中查找是最为重要的操作,而对于查找来说,我们最常用的就是HashSet。HastSet底层是使用散列函数,在查询的方面有优化;TreeSet底层使用的是红黑树。无论是HastSet还是TreeSet,都不能用get()取值,虽然打印出来的值看似有序,但存储上是无序的(个人理解)。
- Map的键值对都可以为null,支持多维扩展。HashMap更适合查找、删除、插入;TreeMap更适合遍历。
- put():放进一个键值对,返回值是被替换的值
- remove(Object key):移除指定键及其对应的值
- putAll(Map mapping):放入一个Map
- clear():清空
- containsKey(Object key):是否包含某个键
- containsValue(Object value):是否包含某个值
9.
发表评论