《工具类与算法讲稿.ppt》由会员分享,可在线阅读,更多相关《工具类与算法讲稿.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、工具类与算法工具类与算法第一页,讲稿共三十九页哦Q1:Integer的大小比较的大小比较nWhenboxing(transforminginttoInteger)thecompilerusesacacheforsmallvalues(-128-127)andreusesthesameobjectsforthesamevalues.第二页,讲稿共三十九页哦Q2:Scanner的使用的使用第三页,讲稿共三十九页哦Q3:面试题:面试题第四页,讲稿共三十九页哦第五页,讲稿共三十九页哦总结总结nJava编程语言只有值传递参数。不管是原始类型还是引编程语言只有值传递参数。不管是原始类型还是引用类型,传递的
2、都是副本。用类型,传递的都是副本。n如果参数类型是原始类型,那么传过来的就是这个参数的一如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值。如果在函数中改变了副个副本,也就是这个原始参数的值。如果在函数中改变了副本的值,但不会改变原始的值。本的值,但不会改变原始的值。n如果参数类型是引用类型,那么传过来的就是这个引如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址在函数中没有改变这个副本的地址,而是改变了地址中的中的值,那么在函数
3、内的改变会影响到传入的参数。值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如如果在函数中改变了副本的地址,如new一个,那么一个,那么副本就指向了一个新的地址,此时传入的参数还是指副本就指向了一个新的地址,此时传入的参数还是指向原来的向原来的地址,所以不会改变参数的值。地址,所以不会改变参数的值。第六页,讲稿共三十九页哦集合集合-向量向量n问题引入问题引入:v若要处理一组若要处理一组相同类型相同类型的已知数量的数据,则可以使用哪种结构的已知数量的数据,则可以使用哪种结构?如:处理如:处理10个整型数据或一个班级个整型数据或一个班级30名同学数据等。名同学数据等。v若要
4、处理一组若要处理一组不同类型不同类型的数据,数量未知,该用哪种结构描的数据,数量未知,该用哪种结构描述?述?如:要存储如:要存储2个个整型、整型、几个几个字符串、字符串、若干个若干个Student数据数据n实际应用:实际应用:v到超市买东西,购买不同商品,如何实现?到超市买东西,购买不同商品,如何实现?第七页,讲稿共三十九页哦集合与集合框架集合与集合框架n集合v一个将一个将多个元素多个元素组合进一个单元或容器的对象组合进一个单元或容器的对象v提供用于存储、获取和操作数据的方法提供用于存储、获取和操作数据的方法n“集合框架”(Collections Framework)v提供一组接口和类,为数据
5、结构中的各种类型提供一个方便操作提供一组接口和类,为数据结构中的各种类型提供一个方便操作的接口和类的的接口和类的APIv提供方便提供方便操作操作各种数据结构各种数据结构的方法的方法n集合框架主要包括v集合容器集合容器用于用于存储存储数据数据v迭代器迭代器用于用于获取获取数据数据v算法算法用于用于操作操作数据数据集合:元素数据类型可以不同集合:元素数据类型可以不同数组:元素数据类型相同数组:元素数据类型相同第八页,讲稿共三十九页哦集合与集合框架集合与集合框架n集合框架优点集合框架优点v高性能高性能v减少编程工作量减少编程工作量精力集中于程序的重要部分精力集中于程序的重要部分v通用性通用性集合框架
6、集合框架API,不同类型的集合以相似的方式进行操作,不同类型的集合以相似的方式进行操作v可拓展性可拓展性容易扩展和改变一个集合容易扩展和改变一个集合提供了将标准数据集成到集合框架中的机制提供了将标准数据集成到集合框架中的机制第九页,讲稿共三十九页哦集合框架图集合框架图MapCollectionSetIteratorListComparableHashSetHashMapArrayListLinkedList第十页,讲稿共三十九页哦集合分类集合分类n在不同的组织方式中,主要有三种类型的集合,称作集(set)、序列(list)、映射(map)v集:对象聚集,可以向集中增加对象,但集:对象聚集,可以
7、向集中增加对象,但不能有重复不能有重复的对象的对象v序列:序列:有序有序的对象聚集,对象按照一定的顺序存放,的对象聚集,对象按照一定的顺序存放,允许重复允许重复v映射:映射的每一项都含有映射:映射的每一项都含有一对对象一对对象,每个对象都有一个与之,每个对象都有一个与之相关联的键对象,键决定了对象在映射中的存储位置。映射中相关联的键对象,键决定了对象在映射中的存储位置。映射中的的键必须各不相同键必须各不相同。第十一页,讲稿共三十九页哦各类集合容器图示各类集合容器图示1243756141212K3-v2K1-v1K2-v1K4-v3集列表 映射第十二页,讲稿共三十九页哦Collection 接口
8、 表示一组对象,有些允许重复,有些不允许,有些有序,有些无序Set 接口继承 Collection不允许重复List 接口继承 Collection允许重复,以元素安插的次序来放置元素,不会重新排列三、集合框架中的三、集合框架中的主要接口主要接口CollectionCollectionSetSetListListMapMapMap接口存放键值对象不能有重复的key13第十三页,讲稿共三十九页哦Collection接口vCollection最基本的集合接口声明所有集合都将拥有的核心方法主要子接口Set不包含重复元素List按照添加顺序存储,可以包含重复元素14第十四页,讲稿共三十九页哦Colle
9、ction主要操作v重要方法重要方法单元素添加、删除操作:booleanadd(Objecto):将对象添加给集合booleanremove(Objecto):如果集合中有与o对象,则删除组操作:作用于元素组或整个集合booleancontainsAll(Collectionc):查找集合中是否含有集合c中所有元素booleanaddAll(Collectionc):将集合c中所有元素添加给该集合voidclear():删除集合中所有元素voidremoveAll(Collectionc):从集合中删除集合c中的所有元素voidretainAll(Collectionc):从集合中删除集合c中
10、不包含的元素15第十五页,讲稿共三十九页哦Collection主要操作v重要方法重要方法查询操作:intsize():返回当前集合中元素的数量booleanisEmpty():判断集合中是否有任何元素booleancontains(Objecto):查找集合中是否含有对象oIteratoriterator():返回一个迭代器,用来遍历集合中各元素Collection转换为Object数组:ObjecttoArray():返回一个内含集合所有元素的arrayObjecttoArray(Objecta):返回一个内含集合所有元素的array。返回的array和参数a的类型相同。16第十六页,讲稿共
11、三十九页哦Set接口及实现类接口及实现类vSet接口特点:接口特点:不允许包含相同的元素至多有一个null元素常用方法同Collection接口v实现实现Set的类的类:HashSet无序顺序可以改变快速-散列法使访问速度很快TreeSet有序顺序是不变的,要么是升序要么是用户自定义顺序,因此使用的时候元素必须具有可比较性。17第十七页,讲稿共三十九页哦HashSet类vHashSet类类主要实现Set接口元素无序,不能重复,类型无限制第十八页,讲稿共三十九页哦课堂实践课堂实践1v创建一个容器对象,向容器中添加各种对象,并输出创建一个容器对象,向容器中添加各种对象,并输出。v参考示例:参考示例
12、:importjava.util.*;classHashSetDemopublicstaticvoidmain(Stringargs)/1.创建一个容器创建一个容器,类型为,类型为HashSetHashSeths=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);第十九页,讲稿共三十九页哦TreeSet类vTreeSet主要实现Set接口和SortedS
13、et接口,元素有序(自然顺序或提供的排序方式),不能重复,必须具有可比性v示例:示例:TreeSet ts=new TreeSet();ts.add(zhangshan);ts.add(“lishi);ts.add(“wangwu);ts.add(“maliu);20第二十页,讲稿共三十九页哦Set使用注意点使用注意点v如何保证加入的元素如何保证加入的元素不重复不重复?加入元素add(Objectobj)方法若容器中没有obj对象,则添加,返回true如果obj已经存在集合中,将返回false21第二十一页,讲稿共三十九页哦遍历元素遍历元素Iterator接口接口vIterator接口接口遍历
14、集合中元素每个Collection都有iterator()方法,此方法返回Iterator对象重要方法Objectnext()/返回要访问的下一个对象booleanhasNext()/是否存在另一个需访问的元素,是返回truevoidremove()/删除上次调用next时返回的对象22第二十二页,讲稿共三十九页哦课堂实践课堂实践3vIterator接口操作,对前面的接口操作,对前面的HashSet和和TreeSet两个容器两个容器中的元素进行迭代显示。中的元素进行迭代显示。v参考示例:参考示例:查看集合中的所有元素,可使用如下方法:查看集合中的所有元素,可使用如下方法:/获取迭代对象获取迭代
15、对象Iteratorit=c.iterator();while(it.hasNext()/判断是否还有元素判断是否还有元素Objectobj=it.next();/元素获取元素获取23第二十三页,讲稿共三十九页哦小结小结vCollection接口是根接口,主要的子接口为接口是根接口,主要的子接口为Set和和List。v对象一旦放入容器,则全部分看作为对象一旦放入容器,则全部分看作为Object对象,对象,若要指定某一类型,则须使用范型。若要指定某一类型,则须使用范型。vSet主要两个实现类主要两个实现类HashSet和和TreeSetHashSet无序,无重复,类型无限制TreeSet有序,无
16、重复,对象间具有可比性24第二十四页,讲稿共三十九页哦List接口vCollection接口的子接口,继承了其方法接口的子接口,继承了其方法v其元素以线性方式存储。其元素以线性方式存储。v特点:特点:元素可重复可重复元素有序有序可以对元素的位置精确控制v实现类实现类ArrayListLinkedListVectorStack第二十五页,讲稿共三十九页哦List接口常用方法v添加元素添加元素booleanadd(Ee)向列表的尾部添加指定的元素voidadd(intindex,Eelement)在列表的指定位置插入指定元素booleanaddAll(Collectionc)添加指定collect
17、ion中的所有元素到此列表的结尾booleanaddAll(intindex,Collectionc)将指定collection中的所有元素都插入到列表中的指定位置第二十六页,讲稿共三十九页哦List接口常用方法v设置元素设置元素Eset(intindex,Eelement)用指定元素替换列表中指定位置的元素。v获取元素获取元素Eget(intindex)返回列表中指定位置的元素。intindexOf(Objecto)返回此列表中第一次出现的指定元素的索引,否则返回-1intlastIndexOf(Objecto)返回此列表中最后出现的指定元素的索引,否则返回-1。ListsubList(in
18、tfromIndex,inttoIndex)返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图。第二十七页,讲稿共三十九页哦List接口常用方法v移除元素移除元素Eremove(intindex)移除列表中指定位置的元素booleanremove(Objecto)从此列表中移除第一次出现的指定元素(如果存在)booleanremoveAll(Collectionc)从列表中移除指定collection中包含的其所有元素voidclear()从列表中移除所有元素第二十八页,讲稿共三十九页哦List接口常用方法v相关判断方法相关判断方法booleancontains
19、(Objecto)如果列表包含指定的元素,则返回truebooleancontainsAll(Collectionc)如果列表包含指定collection的所有元素,则返回truebooleanequals(Objecto)比较指定的对象与列表是否相等booleanisEmpty()如果列表不包含元素,则返回true第二十九页,讲稿共三十九页哦ArrayList介绍v ArrayList就是传说中的就是传说中的动态动态数组数组,内部封装了内部封装了一个一个Object类型的数组类型的数组v特点特点:动态的增加和减少元素灵活的设置数组的大小与数组相比,性能稍差第三十页,讲稿共三十九页哦Array
20、List常用方法v新增方法新增方法VoidensureCapacity(intminCapacity)如有必要,增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。voidtrimToSize()将此ArrayList实例的容量调整为列表的当前大小。voidremoveRange(intfromIndex,inttoIndex)移除列表中索引在fromIndex(包括)和toIndex(不包括)之间的所有元素。第三十一页,讲稿共三十九页哦三、LinkedList介绍v实现实现List接口接口,基于双向循环链表结构基于双向循环链表结构第三十二页,讲稿共三十九页哦L
21、inkedList常用方法v添加元素添加元素voidaddFirst(Ee)将指定元素插入此列表的开头voidaddLast(Ee)将指定元素添加到此列表的结尾v获取元素获取元素element()获取但不移除此列表的头(第一个元素)Eget(intindex)返回此列表中指定位置处的元素EgetFirst()返回此列表的第一个元素EgetLast()返回此列表的最后一个元素第三十三页,讲稿共三十九页哦LinkedList常用方法v移除元素移除元素Eremove()获取并移除此列表的头(第一个元素)Eremove(intindex)移除此列表中指定位置处的元素booleanremove(Obje
22、cto)从此列表中移除首次出现的指定元素(如果存在)EremoveFirst()移除并返回此列表的第一个元素removeLast()移除并返回此列表的最后一个元素。第三十四页,讲稿共三十九页哦ArrayList和LinkedList比较vArrayList基于数组,基于数组,LinkedList基于链表基于链表v随机访问元素,随机访问元素,ArrayList优于优于LinkedListv增加和删除元素,增加和删除元素,LinkedList优于优于ArrayListv可用可用LinkedList实现栈、队列结构实现栈、队列结构v结论:结论:若是随机获取元素值,则用ArrayList若是频繁添加和
23、删除元素,则用LinkedList第三十五页,讲稿共三十九页哦向量类VectorvVector类以实现类似动态数组的功能类以实现类似动态数组的功能v使用了使用了synchronized方法(线程安全)所以性方法(线程安全)所以性能上比能上比ArrayList要差要差 v向量类提供了三种构造方法:向量类提供了三种构造方法:publicvector()publicvector(intinitialcapacity,intcapacityIncrement)publicvector(intinitialcapacity)第三十六页,讲稿共三十九页哦Stack类vStack继承自继承自Vector,实
24、现一个后进先出的堆,实现一个后进先出的堆栈。栈。vStack提供提供5个额外的方法使得个额外的方法使得Vector得以被当得以被当作堆栈使用。作堆栈使用。v基本的基本的push和和pop方法,还有方法,还有peek方法得到栈方法得到栈顶的元素,顶的元素,empty方法测试堆栈是否为空,方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。方法检测一个元素在堆栈中的位置。vStack刚创建后是空栈。刚创建后是空栈。第三十七页,讲稿共三十九页哦Map接口v映射(映射(Map)用于存放“键键-值值”对键和值都是对象,键必须是唯一的键必须是唯一的,但值可以重复根据键值,能找到它对应的一个值
25、CompanyLogo身份证号人商品ID商品房屋ID房屋一般数据表中主键数据表对应的实体类第三十八页,讲稿共三十九页哦HashMap类vHashMap类类是使用哈希表实现Map接口允许null,即nullvalue和nullkey常用方法增加和取出内容put(Objectkey,Objectvalue)增加内容get(Objectkey)根据key找出其对应的value判断是否存在containsKey(Objectkey)判断是否存在指定的keycontainsValue(Objectvalue)判断是否存在指定的value转换为Set视图、SetpublicSetentrySet()返回的是包含所有映射键值对的集合,每个集合元素就是一个Map.Entry对象publicSetkeySet()返回键的集合视图publicCollectionvalues()返回值的集合视图CompanyLogo加入HashMap中元素所在类,如果是自定义的类,必须要重写hashcode和equals方法第三十九页,讲稿共三十九页哦
限制150内