编程随笔-java编程知识收纳-容器


  java中的容器使用是java程序员在编程开发中必不可少的技能,就算是刚入门的java程序员,也一定会用到ArrayList,Hashmap这样的容器。在《java编程思想》提供了一张JDK中容器的知识图谱,而自JDK1.5后也增加了不少新的容器 类。花了一点时间,把JDK中的容器类以导图的形式描述出来,做为一个以后工作的备查记录。
  JDK中 的容器种类繁多,但常用的可能也就不到十种,让我们做一个简单的脉络梳理。
  JDK中的容器源自两个接口: Map和Collection。这两个接口描述了自然世界中两种典型的集合类型:Collection是普通对象的集合,而Map则 是名值对(特殊对象)的集合。由Collection接口衍生出了List和Set两个接口,这里我们可以简单地认为List是可以有重复元素的集合,而Set符合代理中的集合概念,是一个没有重复元素的集合(JAVA中判断两个对象是否相同,可根据重写的equals函数)。
  由List接口,可衍生出列表,堆栈,队列三类容器对象。列表对象中常用的是ArrayList和LinkedList,在实现形式上应对 一维向量与双向链表,由于 LinkedList是双向链表,因而也可以作为队列使用,遍历可使用listIterator从反向遍历。堆栈可视为一个LIFO的队列,典型的实现类是Stack。队列概念上是一个FIFO的队列,在接口中有单向Queue和双向Deque两类接口,大家可以关注一下PriorityQueue(实现上为一个完全搜索二叉树)和DelayQueue这两类比较特殊的队列,在并发编程中常会用到。在队列的实现类中还有一类名字中带“Blocking”的队列实现类,这类容器可在条件满足时阻塞线程。
  由Set接口,衍生出的实现类中常用的为HashSet和TreeSet,需要注意的是TreeSet是一个有序集合。
  由Map接口,衍生出的实现类有HashMap和HashTable。
  对于JDK中的容器,使用迭代器Iterator进行元素的遍历是最常用的方法,而在使用时,设置一个初始容量(针对提供该特征的某些容器)也非常有必要。在JDK1.5之后,java.util.concurrent 包中增加了一些线程安全的容器类(如ConcurrentHashMap),可实现基础操作的原子性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章