结构图:  

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时,客户端代码不用改变。这就是针对抽象编程。

最新文章

  1. 【HTML5】 web上的音频
  2. java利用Aspose.slides.jar将本地ppt文档转化成pdf(完美破解版 无水印 无中文乱码)
  3. cobbler工作流分析
  4. php 下载文件的函数
  5. Asp.net Mvc4 使用Cas单点登录
  6. 【转载】如何使用 gnome-screenshot 截图命令
  7. codeforces #310 div1 A
  8. spring jdbc.property的配置与使用
  9. 全英文版时间格式化07/29/2010 4:14:01 PM
  10. memcache和数据库的使用技巧
  11. php跨服务器传递对象
  12. 不root的情况下 查看App的数据表
  13. discuz!迁移指南
  14. JQuery插件之Animate.css和 jquery-aniview
  15. Linux系统编程之事件驱动
  16. Java 中的锁机制
  17. 12、mysql补充
  18. Direct2D教程VIII——几何(Geometry)对象的运算,本系列的终结篇
  19. [转]greenplum(postgresql)之数据字典
  20. [转] JDBC中的Statement和PreparedStatement的区别

热门文章

  1. oracle数据库的TNS配置
  2. 洛谷P3378 【模板】堆
  3. Java设计模式——装饰者模式
  4. csu 1326 The contest
  5. 【转】C++类中对同类对象private成员访问
  6. python 一些重要的内建异常类
  7. KALI ssh无法登陆的解决办法
  8. 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛
  9. js代码风格之链式结构
  10. 使用Lucene.net+盘古分词实现搜索查询
  11. 关于xml文档使用出现的错误及其解决方法
  12. ubuntu安装Eclipse无图标(手动创建软件图标) —— 其他的软件也一样
  13. 【最全】经典排序算法(C语言)
  14. 【一天一道LeetCode】#223. Rectangle Area
  15. 贝塞尔曲线UIBezierPath简单使用
  16. document的全量替换、强制创建、删除
  17. 修改VS2017模板文件,添加文件头部自定义注释
  18. 2013337朱荟潼 Linux第十八章读书笔记——调试
  19. java代码声明引用变量经验
  20. 6.5笔记-DQL高级查询