ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:49.07KB ,
资源ID:16809872      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16809872.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java集合类学习笔记Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java集合类学习笔记Word格式文档下载.docx

1、比如说:我们需要在容器里面存储某个应用系统的当前的所有的在线用户信息,而当前的在线用户信息是时刻都可能在变化的。 也就是说,我们需要一种存储数据的容器,它能够自动的改变这个容器的所能存放的数据数量的大小。这一点上,如果使用数组来存储的话,就显得十分的笨拙。2. 我们再假设这样一种场景:假定一个购物网站,经过一段时间的运行,我们已经存储了一系列的购物清单了,购物清单中有商品信息。如果我们想要知道这段时间里面 有多少种商品被销售出去了。那么我们就需要一个容器能够自动的过滤掉购物清单中的关于商品的重复信息。如果使用数组,这也是很难实现的。3. 最后再想想,我们经常会遇到这种情况,我知道某个人的帐号名

2、称,希望能够进一步了解这个人的其他的一些信息。也就是说,我们在一个地方存放一些用户信息,我 们希望能够通过用户的帐号来查找到对应的该用户的其他的一些信息。再举个查字典例子:假设我们希望使用一个容器来存放单词以及对于这个单词的解释,而当我 们想要查找某个单词的意思的时候,能够根据提供的单词在这个容器中找到对应的单词的解释。如果使用数组来实现的话,就更加的困难了。为解决这些问题,Java里面就设计了容器集合,不同的容器集合以不同的格式保存对象。数学背景在常见用法中,集合(collection)和数学上直观的集(set)的概念是相同的。集是一个唯一项组,也就是说组中没有重复项。实际上,“集合框架”包

3、含了一个 Set 接口和许多具体的 Set 类。但正式的集概念却比 Java 技术提前了一个世纪,那时英国数学家 George Boole 按逻辑正式的定义了集的概念。大部分人在小学时通过我们熟悉的维恩图引入的“集的交”和“集的并”学到过一些集的理论。 集的基本属性如下: 集内只包含每项的一个实例 集可以是有限的,也可以是无限的 可以定义抽象概念 集不仅是逻辑学、数学和计算机科学的基础,对于商业和系统的日常应用来说,它也很实用。“连接池”这一概念就是数据库服务器的一个开放连接集。Web 服务器必须管理客户机和连接集。文件描述符提供了操作系统中另一个集的示例。映射是一种特别的集。它是一种对(pa

4、ir)集,每个对表示一个元素到另一元素的单向映射。一些映射示例有: IP 地址到域名(DNS)的映射 关键字到数据库记录的映射 字典(词到含义的映射) 2 进制到 10 进制转换的映射 就像集一样,映射背后的思想比 Java 编程语言早的多,甚至比计算机科学还早。而Java中的Map 就是映射的一种表现形式。1.1.2 容器的分类既然您已经具备了一些集的理论,您应该能够更轻松的理解“集合框架”。 “集合框架”由 一组用来操作对象的接口组成。不同接口描述不同类型的组。在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;因此

5、,允许您更改基本的数据结构而不必改变其它代码。框架接口层次结构如下图所示。Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:1) Collection 。 一组对立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。2) Map 。 一组 成对的“键值对”对象。初看起来这似乎应该是一个Collection ,其元素是成对的对象,但是这样的设计实现起来太笨拙了,于是我们将Map明确的提取出来形成一个独立的概念。另一方面,如果使用Collection 表示Map的部分内容,会便于查看此部分内容。因此Map一样容易扩展成多维Map ,无需增加

6、新的概念,只要让Map中的键值对的每个“值”也是一个Map即可。Collection和Map的区别在于容器中每个位置保存的元素个数。Collection 每个位置只能保存一个元素(对象)。此类容器包括:List ,它以特定的顺序保存一组元素;Set 则是元素不能重复。Map保存的是“键值对”,就像一个小型数据库。我们可以通过“键”找到该键对应的“值”。 Collection 对象之间没有指定的顺序,允许重复元素。 Set 对象之间没有指定的顺序,不允许重复元素 List 对象之间有指定的顺序,允许重复元素,并引入位置下标。 Map 接口用于保存关键字(Key)和数值(Value)的集合,集合中

7、的每个对象加入时都提供数值和关键字。Map 接口既不继承 Set 也不继承 Collection。List、Set、Map共同的实现基础是Object数组除了四个历史集合类外,Java 2 框架还引入了六个集合实现,如下表所示。接口实现历史集合类Set HashSet TreeSet List ArrayList Vector LinkedList Stack Map HashMap Hashtable TreeMap Properties 这里没有 Collection 接口的实现,接下来我们再来看一下下面的这张关于集合框架的大图: 这张图看起来有点吓人,熟悉之后就会发现其实只有三种容器:M

8、ap,List和Set ,它们各自有两个三个实现版本。常用的容器用黑色粗线框表示。点线方框代表“接口”,虚线方框代表抽象类,而实线方框代表普通类(即具体类,而非抽象类)。虚线箭头指出一个特定的类实现了一个接口(在抽象类的情况下,则是“部分”实现了那个接口)。实线箭头指出一个类可生成箭头指向的那个类的对象。例如任何集合( Collection )都能产生一个迭代器( Iterator ),而一个List 除了能生成一个ListIterator (列表迭代器)外,还能生成一个普通迭代器,因为List 正是从集合继承来的.1.2Collection1.2.1常用方法Collection 接口用于表示

9、任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。Collection 在前面的大图也可以看出,它是List和Set 的父类。并且它本身也是一个接口。它定义了作为集合所应该拥有的一些方法。如下:注意:集合必须只有对象,集合中的元素不能是基本数据类型。Collection接口支持如添加和除去等基本操作。设法除去一个元素时,如果这个元素存在,除去的仅仅是集合中此元素的一个实例。 boolean add(Object element) boolean remove(Object element) Collection 接口还支持查询操作: int size() boolean i

10、sEmpty() boolean contains(Object element) Iterator iterator() 组操作 :Collection 接口支持的其它操作,要么是作用于元素组的任务,要么是同时作用于整个集合的任务。 boolean containsAll(Collection collection) boolean addAll(Collection collection) void clear() void removeAll(Collection collection) void retainAll(Collection collection) containsAll(

11、) 方法允许您查找当前集合是否包含了另一个集合的所有元素,即另一个集合是否是当前集合的子集。其余方法是可选的,因为特定的集合可能不支持集合更改。 addAll() 方法确保另一个集合中的所有元素都被添加到当前的集合中,通常称为并。 clear() 方法从当前集合中除去所有元素。 removeAll() 方法类似于 clear() ,但只除去了元素的一个子集。 retainAll() 方法类似于 removeAll() 方法,不过可能感到它所做的与前面正好相反:它从当前集合中除去不属于另一个集合的元素,即交。我们看一个简单的例子,来了解一下集合类的基本方法的使用:import java.util

12、.*;public class CollectionToArray public static void main(String args) Collection collection1=new ArrayList();/创建一个集合对象 collection1.add(000);/添加对象到Collection集合中111222 System.out.println(集合collection1的大小:+collection1.size();集合collection1的内容:+collection1); collection1.remove(/从集合collection1中移除掉 这个对象集合

13、collection1移除 000 后的内容:集合collection1中是否包含000 :+collection1.contains();集合collection1中是否包含111 : Collection collection2=new ArrayList(); collection2.addAll(collection1);/将collection1 集合中的元素全部都加到collection2中集合collection2的内容:+collection2); collection2.clear();/清空集合 collection1 中的元素集合collection2是否为空 :+col

14、lection2.isEmpty(); /将集合collection1转化为数组 Object s= collection1.toArray(); for(int i=0;is.length;i+) System.out.println(si); 运行结果为:3000, 111, 222111, 222falsetrue111222这里需要注意的是,Collection 它仅仅只是一个接口,而我们真正使用的时候,确是创建该接口的一个实现类。做为集合的接口,它定义了所有属于集合的类所都应该具有的一些方法。而ArrayList (列表)类是集合类的一种实现方式。这里需要一提的是,因为Collect

15、ion的实现基础是数组,所以有转换为Object数组的方法: Object toArray() Object toArray(Object a)其中第二个方法Object toArray(Object a) 的参数 a 应该是集合中所有存放的对象的类的父类。1.2.2迭代器任何容器类,都必须有某种方式可以将东西放进去,然后由某种方式将东西取出来。毕竟,存放事物是容器最基本的工作。对于ArrayList,add()是插入对象的方法,而get()是取出元素的方式之一。ArrayList很灵活,可以随时选取任意的元素,或使用不同的下标一次选取多个元素。如果从更高层的角度思考,会发现这里有一个缺点:要

16、使用容器,必须知道其中元素的确切类型。初看起来这没有什么不好的,但是考虑如下情况:如果原本是ArrayList ,但是后来考虑到容器的特点,你想换用Set ,应该怎么做?或者你打算写通用的代码,它们只是使用容器,不知道或者说不关心容器的类型,那么如何才能不重写代码就可以应用于不同类型的容器? 所以迭代器(Iterator)的概念,也是出于一种设计模式就是为达成此目的而形成的。所以Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。 迭代器(Iterator)本身就是一个对象,它的工作就是遍历并选择集合序列中的对象,而客户端的程序员不必知道或

17、关心该序列底层的结构。此外,迭代器通常被称为“轻量级”对象,创建它的代价小。但是,它也有一些限制,例如,某些迭代器只能单向移动。Collection 接口的 iterator() 方法返回一个 Iterator。Iterator 和您可能已经熟悉的 Enumeration 接口类似。使用 Iterator 接口方法,您可以从头至尾遍历集合,并安全的从底层 Collection 中除去元素。下面,我们看一个对于迭代器的简单使用:import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;publ

18、ic class IteratorDemo public static void main(String args) Collection collection = new ArrayList(); collection.add(s1s2s3 Iterator iterator = collection.iterator();/得到一个迭代器 while (iterator.hasNext() /遍历 Object element = iterator.next();iterator = + element); if(collection.isEmpty()collection is Empt

19、y! elsecollection is not Empty! size=+collection.size(); Iterator iterator2 = collection.iterator(); while (iterator2.hasNext() /移除元素 Object element = iterator2.next();remove: +element); iterator2.remove(); Iterator iterator3 = collection.iterator(); if (!iterator3.hasNext() /察看是否还有元素还有元素 /使用collect

20、ion.isEmpty()方法来判断程序的运行结果为:iterator = s1iterator = s2iterator = s3 size=3 s1 s2 s3还有元素可以看到,Java的Collection的Iterator 能够用来,: 使用方法iterator() 要求容器返回一个Iterator .第一次调用Iterator 的next() 方法时,它返回集合序列的第一个元素。 使用next() 获得集合序列的中的下一个元素。3) 使用hasNext()检查序列中是否元素。4) 使用remove()将迭代器新返回的元素删除。需要注意的是:方法删除由next方法返回的最后一个元素,在

21、每次调用next时,remove方法只能被调用一次 。大家看,Java 实现的这个迭代器的使用就是如此的简单。Iterator(跌代器)虽然功能简单,但仍然可以帮助我们解决许多问题,同时针对List 还有一个更复杂更高级的ListIterator。您可以在下面的List讲解中得到进一步的介绍。1.3List1.3.1 概述前面我们讲述的Collection接口实际上并没有直接的实现类。而List是容器的一种,表示列表的意思。当我们不知道存储的数据有多少的情况,我们就可以使用List 来完成存储数据的工作。例如前面提到的一种场景。我们想要在保存一个应用系统当前的在线用户的信息。我们就可以使用一个

22、List来存储。因为List的最大的特点就是能够自动的根据插入的数据量来动态改变容器的大小。下面我们先看看List接口的一些常用方法。1.3.2List 就是列表的意思,它是Collection 的一种,即继承了 Collection 接口,以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List 是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列

23、表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。 void add(int index, Object element) :添加对象element到位置index上 boolean addAll(int index, Collection collection) :在index位置后添加容器collection中所有的元素 Object get(int index) :取出下标为index的位置的元素 int indexOf(Object element) :查找对象element 在List中第一次出现的位置 int lastIndexOf(Object element) :查找对

24、象element 在List中最后出现的位置 Object remove(int index) :删除index位置上的元素 Object set(int index, Object element) :将index位置上的对象替换为element 并返回老的元素。先看一下下面表格:简述 实现 操作特性 成员要求 提供基于索引的对成员的随机访问 提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好 成员可为任意Object子类的对象 对列表中任何位置的成员的增加和删除支持较好,但对基于索引的成员访问支持性能较差 在“集合框架”中有两种常规的 List 实现:ArrayList 和 LinkedList。使用两种 List 实现的哪一种取决于您特定的需要。如果要支

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1