Java-集合类汇总
结构图:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
---------------------------------------------------------------------- Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object, 即Collection 的元素(Elements)。一些Collection允许相同的元素 而另一些不行。一些能排序而另一些不行。 Map接口 请注意,Map没有继承Collection接口,Map提供key到value的映射。 一个Map中不能包含相同的key,每个 key只能映射一个value。 Map接口提供3种集合的视图,Map的内容可以被当作一组key集合, 一组value集合,或者一组key-value 映射。 ------------------------------------------------ list接口和set接口区别: list允许有相同元素,而set不允许 Vector与ArrayList区别: Vector非常类似ArrayList,但是Vector是同步的。 由Vector创建的Iterator,虽然和 ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的, 当一个Iterator被创建而且正在被使用,另一个线程改变了 Vector的状态(例如,添加或删除了一些元素), 这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。 Stack 类: Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。 基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。 Stack刚创建后是空栈。 ------------------------------------------------ 总结 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。
知识只有共享才能传播,才能推崇出新的知识,才能学到更多,这里写的每一篇文字/博客,基本都是从网上查询了一下资料然后记录下来,也有些是原滋原味搬了过来,也有时加了一些自己的想法