我的博客
欢迎来到我的博客
bunny.icu

第11章持有对象

第11章持有对象

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

9.

版权声明


本作品系原创, 转载须遵循 CC BY-NC-ND 4.0 许可协议
本文标题:第11章持有对象
本文链接:https://www.bunny.icu/archives/1169

推荐文章

发表评论

textsms
account_circle
email

bunny.icu

第11章持有对象
第11章持有对象
扫描二维码继续阅读
2018-09-11