工具类与算法_第1页
工具类与算法_第2页
工具类与算法_第3页
工具类与算法_第4页
工具类与算法_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工具类与算法第一页,共三十九页,2022年,8月28日Q1:Integer的大小比较Whenboxing(transforming

int

to

Integer)thecompilerusesacacheforsmallvalues(-128-127)andreusesthesameobjectsforthesamevalues.第二页,共三十九页,2022年,8月28日Q2:Scanner的使用第三页,共三十九页,2022年,8月28日Q3:面试题第四页,共三十九页,2022年,8月28日第五页,共三十九页,2022年,8月28日总结Java编程语言只有值传递参数。不管是原始类型还是引用类型,传递的都是副本。如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值。如果在函数中改变了副本的值,但不会改变原始的值。如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值。第六页,共三十九页,2022年,8月28日集合-向量问题引入:若要处理一组相同类型的已知数量的数据,则可以使用哪种结构?如:处理10个整型数据或一个班级30名同学数据等。若要处理一组不同类型的数据,数量未知,该用哪种结构描述?如:要存储2个整型、几个字符串、若干个Student数据实际应用:到超市买东西,购买不同商品,如何实现?第七页,共三十九页,2022年,8月28日集合与集合框架集合一个将多个元素组合进一个单元或容器的对象提供用于存储、获取和操作数据的方法“集合框架”(CollectionsFramework)提供一组接口和类,为数据结构中的各种类型提供一个方便操作的接口和类的API提供方便操作各种数据结构的方法集合框架主要包括集合容器—用于存储数据迭代器—用于获取数据算法—用于操作数据集合:元素数据类型可以不同数组:元素数据类型相同第八页,共三十九页,2022年,8月28日集合与集合框架集合框架优点高性能减少编程工作量精力集中于程序的重要部分通用性集合框架API,不同类型的集合以相似的方式进行操作可拓展性容易扩展和改变一个集合提供了将标准数据集成到集合框架中的机制第九页,共三十九页,2022年,8月28日集合框架图MapCollectionSetIteratorListComparableHashSetHashMapArrayListLinkedList第十页,共三十九页,2022年,8月28日集合分类在不同的组织方式中,主要有三种类型的集合,称作集(set)、序列(list)、映射(map)集:对象聚集,可以向集中增加对象,但不能有重复的对象序列:有序的对象聚集,对象按照一定的顺序存放,允许重复映射:映射的每一项都含有一对对象,每个对象都有一个与之相关联的键对象,键决定了对象在映射中的存储位置。映射中的键必须各不相同。第十一页,共三十九页,2022年,8月28日各类集合容器图示1243756141212K3->v2K1->v1K2->v1K4->v3集列表映射第十二页,共三十九页,2022年,8月28日Collection接口

表示一组对象,有些允许重复,有些不允许,有些有序,有些无序Set接口继承Collection不允许重复List接口继承Collection允许重复,以元素安插的次序来放置元素,不会重新排列三、集合框架中的主要接口CollectionSetListMapMap接口存放键-值对象不能有重复的key13第十三页,共三十九页,2022年,8月28日Collection接口Collection最基本的集合接口声明所有集合都将拥有的核心方法主要子接口Set–不包含重复元素List–按照添加顺序存储,可以包含重复元素14第十四页,共三十九页,2022年,8月28日Collection主要操作重要方法单元素添加、删除操作:booleanadd(Objecto):将对象添加给集合booleanremove(Objecto):如果集合中有与o对象,则删除组操作:作用于元素组或整个集合booleancontainsAll(Collectionc):查找集合中是否含有集合c中所有元素booleanaddAll(Collectionc):将集合c中所有元素添加给该集合voidclear():删除集合中所有元素voidremoveAll(Collectionc):从集合中删除集合c中的所有元素voidretainAll(Collectionc):从集合中删除集合c中不包含的元素15第十五页,共三十九页,2022年,8月28日Collection主要操作重要方法查询操作:intsize():返回当前集合中元素的数量booleanisEmpty():判断集合中是否有任何元素booleancontains(Objecto):查找集合中是否含有对象oIteratoriterator():返回一个迭代器,用来遍历集合中各元素Collection转换为Object数组:Object[]toArray():返回一个内含集合所有元素的arrayObject[]toArray(Object[]a):返回一个内含集合所有元素的array。返回的array和参数a的类型相同。16第十六页,共三十九页,2022年,8月28日Set接口及实现类Set接口特点:不允许包含相同的元素至多有一个null元素常用方法同Collection接口实现Set的类:HashSet无序–顺序可以改变快速-散列法使访问速度很快TreeSet有序–顺序是不变的,要么是升序要么是用户自定义顺序,因此使用的时候元素必须具有可比较性。17第十七页,共三十九页,2022年,8月28日HashSet类HashSet类主要实现Set接口元素无序,不能重复,类型无限制第十八页,共三十九页,2022年,8月28日课堂实践1创建一个容器对象,向容器中添加各种对象,并输出。参考示例:importjava.util.*;

classHashSetDemo{

publicstaticvoidmain(Stringargs[]){

//1.创建一个容器,类型为HashSet

HashSeths=newHashSet();

//2.向容器中添加元素

hs.add("B");

hs.add("A");

hs.add("D");

hs.add(123);hs.add(0.23); hs.add(newCircle(3));

//3.输出容器的元素 System.out.println(hs);}}第十九页,共三十九页,2022年,8月28日TreeSet类TreeSet主要实现Set接口和SortedSet接口,元素有序(自然顺序或提供的排序方式),不能重复,必须具有可比性示例:TreeSetts=newTreeSet();ts.add("zhangshan");ts.add(“lishi");ts.add(“wangwu");ts.add(“maliu");20第二十页,共三十九页,2022年,8月28日Set使用注意点如何保证加入的元素不重复?加入元素add(Objectobj)方法若容器中没有obj对象,则添加,返回true如果obj已经存在集合中,将返回false21第二十一页,共三十九页,2022年,8月28日遍历元素—Iterator接口Iterator接口遍历集合中元素每个Collection

都有iterator()方法,此方法返回Iterator对象重要方法Objectnext()//返回要访问的下一个对象booleanhasNext()//是否存在另一个需访问的元素,是返回truevoidremove()//删除上次调用next时返回的对象22第二十二页,共三十九页,2022年,8月28日课堂实践3Iterator接口操作,对前面的HashSet和TreeSet两个容器中的元素进行迭代显示。参考示例:查看集合中的所有元素,可使用如下方法:

//获取迭代对象Iteratorit=c.iterator();while(it.hasNext())//判断是否还有元素{Objectobj=it.next();//元素获取……}23第二十三页,共三十九页,2022年,8月28日小结Collection接口是根接口,主要的子接口为Set和List。对象一旦放入容器,则全部分看作为Object对象,若要指定某一类型,则须使用范型。Set主要两个实现类HashSet和TreeSetHashSet无序,无重复,类型无限制TreeSet有序,无重复,对象间具有可比性24第二十四页,共三十九页,2022年,8月28日List接口Collection接口的子接口,继承了其方法其元素以线性方式存储。特点:元素可重复元素有序可以对元素的位置精确控制实现类ArrayListLinkedListVectorStack第二十五页,共三十九页,2022年,8月28日List接口常用方法添加元素booleanadd(Ee)向列表的尾部添加指定的元素voidadd(intindex,Eelement)

在列表的指定位置插入指定元素booleanaddAll(Collectionc)添加指定collection中的所有元素到此列表的结尾

booleanaddAll(intindex,Collectionc)将指定collection中的所有元素都插入到列表中的指定位置第二十六页,共三十九页,2022年,8月28日List接口常用方法设置元素Eset(intindex,Eelement)

用指定元素替换列表中指定位置的元素。获取元素Eget(intindex)

返回列表中指定位置的元素。intindexOf(Objecto)

返回此列表中第一次出现的指定元素的索引,否则返回-1

intlastIndexOf(Objecto)

返回此列表中最后出现的指定元素的索引,否则返回-1。List<E>subList(intfromIndex,inttoIndex)返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图。第二十七页,共三十九页,2022年,8月28日List接口常用方法移除元素Eremove(intindex)

移除列表中指定位置的元素

booleanremove(Objecto)

从此列表中移除第一次出现的指定元素(如果存在)

booleanremoveAll(Collectionc)从列表中移除指定collection中包含的其所有元素voidclear()从列表中移除所有元素第二十八页,共三十九页,2022年,8月28日List接口常用方法相关判断方法booleancontains(Objecto)

如果列表包含指定的元素,则返回true

booleancontainsAll(Collectionc)如果列表包含指定collection的所有元素,则返回true

booleanequals(Objecto)比较指定的对象与列表是否相等booleanisEmpty()如果列表不包含元素,则返回true第二十九页,共三十九页,2022年,8月28日ArrayList介绍

ArrayList就是传说中的动态数组,内部封装了一个Object类型的数组特点:动态的增加和减少元素灵活的设置数组的大小与数组相比,性能稍差第三十页,共三十九页,2022年,8月28日ArrayList常用方法新增方法VoidensureCapacity(int

minCapacity)

如有必要,增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。voidtrimToSize()将此ArrayList实例的容量调整为列表的当前大小。voidremoveRange(int

fromIndex,int

toIndex)移除列表中索引在fromIndex(包括)和toIndex(不包括)之间的所有元素。第三十一页,共三十九页,2022年,8月28日三、LinkedList介绍实现List接口,基于双向循环链表结构第三十二页,共三十九页,2022年,8月28日LinkedList常用方法添加元素voidaddFirst(E

e)

将指定元素插入此列表的开头voidaddLast(E

e)将指定元素添加到此列表的结尾获取元素element()获取但不移除此列表的头(第一个元素)

Eget(int

index)返回此列表中指定位置处的元素

EgetFirst()

返回此列表的第一个元素EgetLast()

返回此列表的最后一个元素第三十三页,共三十九页,2022年,8月28日LinkedList常用方法移除元素Eremove()获取并移除此列表的头(第一个元素)Eremove(int

index)移除此列表中指定位置处的元素

booleanremove(Object

o)

从此列表中移除首次出现的指定元素(如果存在)EremoveFirst()移除并返回此列表的第一个元素removeLast()

移除并返回此列表的最后一个元素。第三十四页,共三十九页,2022年,8月28日ArrayList和LinkedList比较ArrayList基于数组,LinkedList基于链表随机访问元素,ArrayList优于LinkedList增加和删除元素,LinkedList优于ArrayList可用LinkedList实现栈、队列结构结论:若是随机获取元素值,则用ArrayList若是频繁添加和删除元素,则用LinkedList第三十五页,共三十九页,2022年,8月28日向量类VectorVector类以实现类似动态数组的功能使用了synchronized方法(线程安全)所以性能上比ArrayList要差向量类提供了三种构造方法:publicvector()publicvector(intinitialcapacity,intcapacityIncrement)publicvector(intinitialcapacity)第三十六页,共三十九页,2022年,8月28日Stack类Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论