Java集合类解析

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

常用Байду номын сангаас法(详见API)
方法
方法说明
add(Object o)
将指定的元素添加到此列表的尾部
add(int index, Object o) 将指定元素插入到此列表中的指定位置
get(int index) remove(int index)
size() set(int index, Object o)
有一点点区别:
➢ ArrayList在尾部插入数据的效率比LinkedList高,LinkedList 更适用于随机地在任意位置添加删除数据。
➢ LinkedList提供了对尾部和头部的添加与删除操作方法。相比 较ArrayList而言,多出的方法如下页表所示。
常用方法(详见API)
方法名
void addFirst(E e) void addLast(E e)
contains(Object o)
返回此列表中指定位置上的元素
移除此列表中指定位置上的元素 返回此列表中的元素数
用指定的元素替代此列表中指定位置上的 元素
如果此列表中包含指定的元素,则返回 true
List接口->LinkedList类
➢ LinkedList是List接口的链接列表实现。 ➢ 在一般情况下,LinkedList和ArrayList在操作上非常相似,它们仅仅
Java集合类
主要内容
集合类概述 Collection接口 List接口-Vector类、ArrayList类、LinkedList类 Set接口-HashSet类 Map接口-HashMap类、TreeMap类 Iterator(迭代器)
集合类概述
为容纳一组对象,最适宜的选择应当是数组。而且假如容纳 的是一系列基本数据类型,更是必须采用数组。当我们编写程序 时,通常并不能确切地知道最终需要多少个对象。有些时候甚至 想用更复杂的方式来保存对象。为解决这个问题,Java 提供了 集合类库。
List接口->ArrayList类
➢ ArrayList是List接口的大小可变数组的实现。允许包括null在 内的所有元素。
➢ 每个ArrayList实例都有一个容量。该容量是指用来存储列表元 素的数组的大小,它总是至少等于列表的大小。随着向 ArrayList中不断添加元素,其容量也自动增长。
E getFirst() E getLast() E removeFirst() E removeLast()
方法说明
将指定元素插入到此列表的开头 将指定元素添加到此列表的结尾
返回此列表的第一个元素 返回此列表的最后一个元素 移除并返回此列表的第一个元素 移除并返回此列表的最后一个元素
Set接口
Set 拥有与Collection 完全相同的接口,所以和两种不同的 List 不同,它没有什么额外的功能。相反,Set完全就是一个 Collection,只是具有不同的行为(这是多态最理想的应用:用 于表达不同的行为)。添加到Set 的每个元素都必须是独一无二 的;添加到Set 里的对象必须定义equals(),从而建立对象的唯 一性。Set 拥有与Collection 完全相同的接口。一个Set 不能 保证自己可按任何特定的顺序维持自己的元素。
集合类概述
新的集合库考虑到了“容纳自己对象”的问题,并将其分割成两 个明确的概念: ➢ 集合(Collection):一组单独的元素,通常应用了某种规则。 在这里,一个List(列表)必须按特定的顺序容纳元素,而一个 Set(集)不可包含任何重复的元素。 ➢ 映射(Map):一系列“键-值”对。从表面看,这似乎应该成 为一个“键-值”对的“集合”,但假若试图按那种方式实现它, 就会发现实现过程相当笨拙。另一方面,可以方便地查看Map 的 某个部分。只需创建一个集合,然后用它表示那一部分即可。这 样一来,Map 就可以返回自己键的一个Set、一个包含自己值的 List 或者包含自己“键-值”对的一个List。和数组相似,Map 可方便扩充到多个“维”,毋需涉及任何新概念。只需简单地在 一个Map 里包含其他Map(后者又可以包含更多的Map,以此类 推)。
➢ List的具体实现类常用的有ArrayList和LinkedList。 —ArrayList从其命名中可以看出它是一种类似数组的形式
进行存储,因此它的随机访问速度极快。 —LinkedList的内部实现是链表,它适合于在链表中间需
要频繁进行插入和删除操作。
List接口->Vector类
Vector非常类似ArrayList,但是Vector是同步的。由 Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同 一接口,但是,因为Vector是同步的,当一个Iterator被创建而 且正在被使用,另一个线程改变了Vector的状态(例如,添加或 删除了一些元素),这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。
List接口
➢ 顺序是List 最重要的特性;它可保证元素按照规定的顺序排列 。List 为Collection 添加了大量方法,以便我们在List 中部 插入和删除元素(只推荐对LinkedList 这样做)。List 也会生 成一个ListIterator(列表反复器),利用它可在一个列表里朝 两个方向遍历,同时插入和删除位于列表中部的元素(同样地, 只建议对LinkedList 这样做)。
使用Java 集合的“缺点”是在将对象置入一个集合时丢失 了类型信息。之所以会发生这种情况,是由于当初编写集合时, 那个集合的程序员根本不知道用户到底想把什么类型置入集合。 若指示某个集合只允许特定的类型,会妨碍它成为一个“常规用 途”的工具,为用户带来麻烦。为解决这个问题,集合实际容纳 的是类型为Object 的一些对象的句柄。
Collection接口
Collection是个java.util下的接口,它提供了对集合对象 进行基本操作的通用接口方法。它有三个基本的方法: boolean add(Object obj): 用于将一个对象放入到集合中,当 原有Collection对象改变后,它返回true; boolean addAll(Collection col): 将另一个Collection对象中 的所有元素插入该Collection对象中,当目标Collection对象改 变后,它将返回true; Iterator iterator(): 它将返回一个Iterator(遍历器)接口 对象。
相关文档
最新文档