- 53
- 0
- 约 31页
- 2017-02-15 发布于湖北
- 举报
总结 如果要求线程安全,使用Vector、Hashtable 如果不要求线程安全,应使用ArrayList,LinkedList,HashMap 如果要求键值对,则使用HashMap,Hashtable 如果数据量很大,又要线程安全考虑,使用Vector / * * 规范的创建ArrayList对象的方式为:List 集合名 new ArrayList 这里的类型名指在列表中要存放的数据类型 List容器转化为 Iterator 迭代容器 Iterator it list.iterator ; * remove 对象名 * LinkedList中也有: void add int index, E element boolean add E e :插入的列表的结尾 E get int index void clear ArrayList和Vector都是java的集合类,都可以用来存放java对象,这是他们的共同点,但是也有区别: 1. 同步性 Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率。 2. 数据增长 从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象,当你向这两种类型中增加元素是时候,如果元素的数目超出了内部数组目前的长度,他们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销。 * 创建一个类Stack,代表堆栈(其特点为:后进先出),添加方法add Object obj 、以及get ,添加main方法进行验证,要求: 使用LinkedList实现堆栈 在向LinkedList中添加时,使用addLast方法 在从LinkedList中取出时,使用for循环 * * Set cartItems cart.keySet ; Object[] isbn cartItems.toArray ; (同步,如果有多个线程同时访问一个Hashtable,线程1访问时,不允许其它访问,线程1访问结束后其余线程才可以访问。同步,安全,但速度低)(大部分程序都不需要同步) * / 第十五章 -----用集合存储对象 / 掌握Java集合框架的常用接口 掌握常用集合类: Vector ArrayList HashMap HashTable 学习目标 / 为什么需要集合框架 学员1 学员20 如何存储每天的新闻信息? 如何存储课程的编号与课程信息,能够通过编号方便地获得课程信息? 如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象——那么,可以使用Java集合框架,来解决这类问题 一维数组 代码1 …… 代码N 课程1 …… 课程N 一一对应 新闻1 …… 新闻N 每天的新闻总数不确定,显然无法再使用数组保存 存储一个班的学员信息,假定一个班容纳20名学员 集合框架层次图 / 从上面的图可以看出java集合类主要有以下几种: List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类:HashMap类,Hashtable类 Set结构的集合类:HashSet类,TreeSet类 Queue结构的集合:Queue接口 / Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明,只需学会如何使用它们,就可以处理实际应用中出现的问题了 Java集合框架位于java.util包中 / List接口和ArrayList类 开发一套小型的新闻管理系统,要求如下: 可以存储各类新闻标题(包含ID、名称、创建者、创建时间) 可以获取新闻标题的总数 可以逐条打印每条新闻标题的名称 存储方式如何选择? 元素个数不确定 使用集合类 需要遍历元素 存储对象如何确定? 类型:新闻标题 属性:ID、名称、创建者、创建时间 / List接口和ArrayList类 第一步,确定存储方式 1、ArrayList类是List接口的一个具体实现类 2、ArrayList 对象实现了可变大小的数组 3、随机访问和遍历元素时,它提供更好的性能 元素1 元
原创力文档

文档评论(0)