JAVA-集合与泛型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013年6月13日星期四
8
Java程序设计
9.2 Collection接口
方法名 boolean add(Object o) boolean addAll(Collection c) Object[] toArray() Object[] toArray(Object[] a) Iterator iterator() void clear() boolean remove(Object o) 插入单个对象 添加另外一个集合对象c中的所有对象 以数组的形式返回内容 以数组的形式返回内容 返回一个实现了Iterator接口的对象 清空所有对象 删除指定的对象 功能说明
类ArrayList、LinkedList、Vector、Stack等实现了 List接口。 LinkedList类提供了使用双向链表实现数据存储的方法, 可按序号检索数据,并能够进行向前或向后遍历。 由于插入数据时只需要记录元素的前后项即可,所以 插入数度较快,因此适合于在链表中间需要频繁进行插 入和删除的操作。 LinkedList的构造方法:
LinkedList();创建一个空链表 LinkedList(Collection c);创建一个以集合c中元素为初始值的链表
2013年6月13日星期四
18
Java程序设计
Linkedlist接口的主要方法
方法名 public boolean add(Object element) public boolean add(int index,Object o) public boolean addFirst(Object o) public boolean addLast(Object o) public boolean clear() public Object remove(int index) public Object remove(Object o) public Object get (int index) 功能说明 向链表末尾添加一个新的结点 将对象o添加到链表中由index指定位置 将对象o添加到链表的头部 将对象向o添加到链表的末尾 删除链表的所有节点,成为空链表 删除指定位置上的结点 删除首次出现含有o的结点 返回链表中index位置处的结点对象
2013年6月13日星期四
16
Java程序设计
List接口的主要方法
方法名 功能说明
void add(int index,Object element) boolean addAll(int index,Collection c)
ListIterator listIterator() ListIterator listIterator(int index)
2013年6月13日星期四
3
Java程序设计
Collection接口
Collection
Set
List
SortedSet
AbstractSet
AbstractList
TreeSet
HashSet
ArrayList
Vector
AbstractSequentialList
Stack
LinkedList
2013年6月13日星期四
20
Java程序设计
9.4.2 ArrayList 类
ArrayList常用的构造函数如下: ArrayList ():构建一个空的ArrayList对象。 ArrayList (Collection c):构建一个ArrayList对象,并且 将集合c中所有元素添加进去。 ArrayList (int initialCapacity):构建一个拥有特定容量 的空ArrayList对象。 ArrayList的很多成员方法与LinkedList相似,两者的本质 区别是一个使用顺序结构,另一个使用链表结构,因此, 它也可以使用LinkedList类提供的方法进行列表的操作。 例9-5
对外的接口 接口的实现 对集合运算的算法
集合API的根是一个集合接口,存放于java.util包中。 Collection接口定义了所有属于集合的类都应该具有的通用 方法。
2013年6月13日星期四
2
Java程序设计
Java集合框架结构由两颗接口树构成: 第一棵树根节点为Collection接口,它定义了所有集合的 基本操作,如添加、删除、遍历等。它的子接口Set、List 等则提供了更加特殊的功能。 第二棵树根节点为Map接口。与哈希表类似,保持的是键 值对的集合,可以通过键来实现对值元素的快速访问。
HashSet():创建一个空的哈希集。 HashSet(Collection c):创建一个哈希集,并且将集合c中所有元素添加 进去。 HashSet(int initialCapacity):创建一个拥有特定容量的空哈希集。 HashSet(int initialCapacity,float loadFactor):创建一个拥有特定容量 和加载因子的空哈希集。
2013年6月13日星期四
14
Java程序设计
TreeSet的使用
TreeSet hs = new TreeSet(); hs.add("D"); hs.add("E"); hs.add("F"); hs.add("A"); hs.add("B"); hs.add("C"); hs.add("A"); System.out.println(hs);
Java程序设计
第9章
集合类与泛型程序设计
2013年6月13日星期四
1
Java程序设计
9.1 Java中的集合类结构
Java提供了集合类(Collection)及其API,于是用户可以通 过统一的操作接口,使得从一种数据结构到另一种数据结构 的转换极为方便,简化了程序员编程时的负担。 任何集合框架包括三部分内容:
每个元素都是一对key-value(键值/实值)对象, 且每个元素中的键值都不能与其他元素中的键值相 同。
2013年6月13日星期四
6
Java程序设计
集合接口
接口 描述
Collection
能使你操作对象数组,它位于集合框架层次结 构的顶层
扩展Collection,表示有序的,可包括重复元素 的列表 扩展Collection,表示无序的,无重复元素的集 合(数学上的含义)。 扩展Set,对Set中元素进行排序
删除指定位置的对象 用元素element取代位置index上的元素,返回 被取代的元素 返回第一个匹配对象的位置 返回最后一个匹配对象的索引
int indexOf(object o) int lastIndexOf(object o)
2013年6月13日星期四
17
Java程序设计
9.4.1 LinkedList 类
2013年6月13日星期四
10
Java程序设计
实现Set接口的类
AbstractCollection
<<接口>> Collection
SortedSet接口用来描 述有序的元素集合
AbstractSet
<<接口>> Set
TreeSet实现了这个接 口,它将放入其中的元 素按序存放,要求其中 的对象是可排序的。
hsBaidu Nhomakorabeaadd("A");
System.out.println(hs);
[D, A, F, C, B, E] 从输出结果可以看出,元素并没 有按顺序进行存储,并且也没有 重复元素。[例9-2]
13
2013年6月13日星期四
Java程序设计
TreeSet类
TreeSet为使用树结构进行存储的Set接口提供了一个 工具 对象按升序存储。访问和检索是很快的。 在存储了大量的需要进行快速检索的排序信息的情况 下,TreeSet是一个很好的选择。
该程序的输出如下: [A, B, C, D, E, F] TreeSet按树存储其元素,它们被按照自然顺序自动安排,也不能有重复元 素 [例9-3]
2013年6月13日星期四
15
Java程序设计
9.4 List接口
List接口是包含有序元素的一种Collection子接口,其中的 元素必须按序存放。元素之间的顺序关系可以由插入的时 间先后决定,也可以由元素值的大小决定。 List接口使用类似于数组下标的索引的概念表示元素在 List 中的位置。用户能够使用索引来访问List 中的元素。 索引从0开始。为了保持元素的有序的特性,List接口新增 加了大量的方法,使之能够在序列中间根据具体位置添加 和删除元素。
抽象类AbstractSet实 现了部分Collection接 口,并有一个子类 HashSet,它以散列方 式表示集合内容。
HashSet
TreeSet
<<接口>> SortedSet
LinkedHashSet
2013年6月13日星期四
11
Java程序设计
HashSet类
HashSet扩展AbstractSet并且实现Set接口。 它创建了一个使用哈希表存储的集合,能快速定位一个元素,从而 可以优化查询的速度,特别是在查找大集合时HashSet类比较有用。 该类集使用散列表进行存储。 在散列(hashing)中,一个关键字的信息内容被用来确定唯一的一个 值,称为散列码(hashcode)。而散列码被用来当作与关键字相连 的数据的存储下标。 存储在HashSet中的元素必须正确覆盖java.lang.Object中定义的 hashCode()方法。 HashSet的构造函数如下:
例9-4
2013年6月13日星期四
19
Java程序设计
9.4.2 ArrayList 类
ArrayList类是List接口的一个可变长数组的实现,即一个 ArrayList类对象可以动态改变大小。每个ArrayList类对象 都有一个容量(Capacity),用于存储元素的数组的大小。容 量可随着不断添加新元素而自动增加。 序列以初始长度创建,当长度超过时,集合自动变大;当 删除对象时,集合自动变小。集合中允许存储null值。 ArrayList类的随机访问速度快,但是向表中插入和删除比 较慢。 当需要插入大量元素时,在插入前可以调用 ensureCapacity 方法来增加ArrayList 的容量以提高插入效 率。
List
Set
SortedSet
2013年6月13日星期四
7
Java程序设计
9.2 Collection接口
Collection接口是构造集合框架的基础。它声明所有集 合类都将拥有的核心方法。 包含下面几种类型的方法 增加元素,清除元素,判断元素的存在 返回迭代接口,把集合转换成数组 集合的大小
在指定位置上添加一个对象 将c中的所有对象添加到指定位置
返回一个ListIterator 返回指定的ListIterator
Object get(int index)
Object remove(int index) Object set(int index,object element)
返回指定位置的对象
boolean ramoveAll(Collection c)
boolean retainAll(Collection c) boolean contains(Object o) boolean containsAll(Collection c) boolean isEmpty() int size() 2013年6月13日星期四
2013年6月13日星期四
4
Java程序设计
Map接口
Map
AbstractMap
TreeMap
HashtMap
WeakHashMap
2013年6月13日星期四
5
Java程序设计
Collection:
每个元素都是单一对象。 List以特定顺序容纳元素。 Set中不能有重复的元素。
Map:
删除c中所拥有的对象
保留指定的对象 检查是否包含有指定的对象 检查是否包含c中所包含的对象 判断集合是否为空 获取集合中的对象个数
例9-1
9
Java程序设计
9.3 Set接口
Set接口是一种不包含重复元素的Collection的子接口。Set 接口中并没有引入新方法,它提供的基本方法和Collection 接口类似。 Set接口派生了一个SortedSet接口和一个抽象类AbstractSet。
2013年6月13日星期四
12
Java程序设计
loadFactor是0.01.0之间的一个数,通常默认为0.75。加载因子定义 了哈希集合充满什么程度时就要增加容量。即当元素的数目大于哈 希集容量和加载因子之积时,哈希集容量将扩展。 例:
HashSet hs = new HashSet(); hs.add("A"); hs.add("B"); hs.add("C"); hs.add("D"); hs.add("E"); hs.add("F");
相关文档
最新文档