第6章数组字符串及容器类课件.ppt

上传人(卖家):晟晟文业 文档编号:3859229 上传时间:2022-10-19 格式:PPT 页数:45 大小:152.97KB
下载 相关 举报
第6章数组字符串及容器类课件.ppt_第1页
第1页 / 共45页
第6章数组字符串及容器类课件.ppt_第2页
第2页 / 共45页
第6章数组字符串及容器类课件.ppt_第3页
第3页 / 共45页
第6章数组字符串及容器类课件.ppt_第4页
第4页 / 共45页
第6章数组字符串及容器类课件.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、第第6章章 数组、字符串及容器类数组、字符串及容器类 数组类型属于复合数据类型,它是由类型相同的元素组成的有序的数据集合。因此数组最主要的特点是:(1)元素类型相同;(2)元素有序;(3)所有元素公用一个名称。另外,根据组织数组的结构不同,数组可以分为一维数组、二维数组、,依此类推。第第6 6章章 数组、字符串及容器类数组、字符串及容器类n6.1一维数组n6.2多维数组n6.3字符串处理 n6.4数组与容器的比较 n6.5容器n6.6迭代器n6.7容器的分类法n6.8总结n6.9习题6.16.1一维数组一维数组 n6.1.1一维数组的声明 n6.1.2一维数组的初始化 n6.1.3一维数组的引

2、用 6.1.16.1.1一维数组的声明一维数组的声明n数组声明的语法格式有以下两种:arraytype array-name;或arraytype array-name;n例如:int month_days;或int month_days;6.1.26.1.2一维数组的初始化一维数组的初始化 n静态初始化是在定义数组的同时对数组元素进行初始化:String strName=“I”,”like”,”Java!”;String strName=“I”,”like”,”Java!”;n数组的动态初始化:数组名=new数组元素类型长度;即:array-name=new typearraySize;P1

3、246.1.36.1.3一维数组的引用一维数组的引用 n所谓数组元素的引用,指的是如何在程序中引用初始化后的数组元素,引用的方式为arrayNameindex,其中index为数组的下标,可以是整型常数、变量和表达式,范围是从0开始,一直到数组的长度减一。例如:int a=1,2,3,4,5;a0=1;a1=2;a2=3;a3=4;a4=5;p125 6.26.2多维数组多维数组n6.2.1二维数组的声明 n6.2.2二维数组的初始化 n6.2.3二维数组的引用 6.2.16.2.1二维数组的声明二维数组的声明 n二维数组和一维数组一样,也必须先声明再创建,声明和创建也可以合在一条语句中完成。

4、二维数组声明的格式为:数组元素类型 数组名;或数组元素类型 数组名;6.2.26.2.2二维数组的初始化二维数组的初始化n二维数组的初始化也分为静态初始化和动态初始化两种。所谓静态初始化,就是在定义二维数组的同时为数组分配了空间,如下:int int_array=1,1,1,2,2,2,3,3,3;n对于二维数组的动态初始化,可以有两种方法:(1)直接为每一维分配空间,格式如下:arrayName=new typearrayLen1 arrayLen2;(2)从最高维开始,分别为每一维分配空间,格式如下:arrayName=new type arrayLen1;6.2.36.2.3二维数组的引

5、用二维数组的引用n 对二维数组中元素的引用格式如下:arrayNameindex1index2;其中arrayName代表二维数组的名称,index1和index2是下标,与一维数组一样,这两个下标可以是常数、变量和表达式,如int_array 12、int_array a1、int_array a*20,而且每一维的下标都是从0开始,一直到该维长度减一。p129页6.36.3字符串处理字符串处理 n6.3.1生成字符串n6.3.2访问字符串 n6.3.3修改字符串 n6.3.4其他操作 6.3.16.3.1生成字符串生成字符串n1.构造String实例对象的方法 构造String实例对象的方

6、法主要有三种:(1)采用双引号将Java字符序列括起来,既通过构造字符串直接量的方式构造String实例对象。例如:String s1=”abcd”;(2)采用new运算符 例如:String s1=new String();(3)通过运算符”+”或其他成员方法生成String实例对象。例如:String s1=”abcd”+”1234”;6.3.16.3.1生成字符串生成字符串n2.StringBuffer类的主要构造方法 (1)public StringBuffer()创建一个空的StringBuffer类;(2)public StringBuffer(int length)创建一个大小为

7、length的StringBuffer类;(3)public StringBuffer(String str)按str创建一个动态可变的StringBuffer类。6.3.26.3.2访问字符串访问字符串 n所谓访问字符串,就是获得字符串的长度,得到某个字符或子串在字符串中的索引位置获得到指定位置的字符或字串。1.String类的常用方法 2.StringBuffer类的常用方法6.3.36.3.3修改字符串修改字符串n在对字符串的操作中,经常会对给定的字符串进行一些修改操作,在本小节中,我们将对类String和StringBuffer中提供的一些字符串修改方法进行介绍,主要是介绍String

8、类提供的几种方法。6.3.46.3.4其他操作其他操作n这里将介绍一些与字符串有关的其他方法,例如:1.startsWith(String preString)和endWith(String endString)2.startsWith(String preString,int offsetInd)3.equals()和equalsIgnoreCase()6.46.4数组与容器类的比较数组与容器类的比较n6.4.1数组与容器类的区别 n6.4.2Arrays类 6.4.16.4.1数组与容器类的区别数组与容器类的区别(1)效率(2)类型(3)持有基本类型的能力 6.4.16.4.1数组与容器类

9、的区别数组与容器类的区别 n数组的简单实例:n实际上我们无论使用哪种数组,数组的标识符都只是一个引用,可以作为数组初始化的一部分隐式的创建这个对象,或用new表达式显式的来创建。length方法表示数组对象能够存储多少元素,“”操作符是访问数组对象的唯一一种方式。6.4.16.4.1数组与容器类的区别数组与容器类的区别n基本类型的容器:基本类型的容器:n数组可以保存对象的引用,也可以直接保存基本类型,而容器类只能保存对象的引用。当然容器中可以使用包装类,如Integer,Byte,Double等,用来代替基本类型的值。但是相对于基本数据类型,包装类使用起来不是很方便。6.4.2Arrays6.

10、4.2Arrays类类n填充数组 n复制数组 n比较数组 n比较数组元素 nbinarySearch()的用法 6.56.5容器容器n6.5.1容器类简介n6.5.2容器的填充n6.5.3容器的缺点6.5.16.5.1容器类简介容器类简介 Java2容器类类库的用途是“保存对象”,它分为两类:Collection:一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。Map:一组成对的“键值对”对象,即其元素是成对的对象。6.5.26.5.2容器的填充容器的填充 nCollections也有一个非常实用的static方法集,其中有一个fill()方

11、法,该方法的作用也是用同一个对象的引用来填充容器,并只对List对象起作用,而对Set或Map不起作用。6.5.36.5.3容器的缺点容器的缺点(1)我们将对象的引用加入容器时就丢失了类型的信息,也就是说对于放入容器的对象就没有类型限制了,即便是我们刻意保持容器的类型,别人也可以轻易的对其进行修改。(2)由于丢失了类型信息,容器只能认为它保存的是Object类型的引用。因此在使用容器中的元素之前一定要做类型转换。6.66.6迭代器迭代器n迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。J

12、ava中的Iterator功能比较简单,并且只能单向移动:(1)iterator()方法:要求容器返回一个Iterator。第一次调用Iterator的next()方法,它将返回序列中的第一个元素;(2)next()方法:获得序列中的下一个元素;(3)hasNext()方法:检查序列中是否还有元素;(4)remove()方法:将迭代器新返回的元素删除。6.76.7容器的分类法容器的分类法n6.7.1Collection 接口 n6.7.2List接口 n6.7.3Set接口 n6.7.4Map接口 n6.7.5Java集合类对equals()和hashCode()方法的要求 6.7.1Coll

13、ection 6.7.1Collection 接口接口 nCollection类的方法 boolean add(Object obj)boolean remove(Object obj)int size()boolean isEmpty()boolean contains(Object obj)Iterator iterator()boolean containsAll(Collection c)boolean addAll(Collection c)void clear()void removeAll(Collection c)void retainAll(Collection c)6.7.

14、2List6.7.2List接口接口 n(1)面向位置的操作包括插入某个元素或者Collection的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,将报告元素所在的位置。n(2)List 接口不但能以位置序列迭代的遍历整个列表,而且还能处理集合的子集。6.7.2List6.7.2List接口接口nLinkedList的主要方法 void addFirst(Object obj)void addLast(Object obj)Object getFirst()Object getLast()Object removeFirst()Obj

15、ect removeLast()LinkedList()LinkedList(Collection c)6.7.2List6.7.2List接口接口nArrayList类的主要方法 void ensureCapacity(int minCapacity)void trimToSize()6.7.3Set6.7.3Set接口接口nSet 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同。6.7.3Set6.7.3Set

16、接口接口nSortedSet类的主要方法 Comparator comparator()Object first()Object last()SortedSet subSet(Object beginElement,Object endElement)SortedSet headSet(Object endElement)SortedSet tailSet(Object beginElement)6.7.3Set6.7.3Set接口接口nHashSet类的主要方法 HashSet()HashSet(Collection c)HashSet(int initCapacity)HashSet(in

17、t initCapacity,float loadFactor)6.7.3Set6.7.3Set接口接口nTreeSet类的主要方法 TreeSet()TreeSet(Collection c)TreeSet(Comparator c)TreeSet(SortedSet s)6.7.3Set6.7.3Set接口接口nLinkedHashSet类的主要方法 LinkedHashSet()LinkedHashSet(Collection c)LinkedHashSet(int initCapacity)LinkedHashSet(int initCapacity,float loadFactor)

18、6.7.4Map6.7.4Map接口接口nMap接口的主要方法 Object put(Object key,Object value)Object remove(Object key)void putAll(Map t)void clear()Object get(Object key)boolean containsKey(Object key)boolean containsValue(Object value)int size()boolean isEmpty()Set keySet()Collection values()6.7.5Java6.7.5Java集合类对集合类对equals

19、()equals()和和hashCode()hashCode()方法的要求方法的要求 n为了保证Java集合正常工作,有些Java集合类HashSet、TreeSet、HashMap、TreeMap对存放的对象有特殊的要求。n另外,要了解重写hashCode()的重要性。6.86.8总结总结 本章主要介绍了一维数组、二维数组以及字符串的处理,其中对一维数组和二维数组主要介绍了它们如何声明,如何初始化以及如何引用。另外我们对字符串处理的介绍,主要包括字符串的生成,访问,修改和其他相关操作。最后我们介绍了数组与容器类比较,然后着重介绍的就是容器类的内容,同时,对Java集合类中非常重要的两个方法:

20、equals()和hashCode()方法进行了说明。练习(练习(1)1.定义一个长度为10的整数数组,然后将1120分别赋给数组元素,计算该数组中下标为偶数的元素的和。2.写一个方法,完成替换字符串中的子串的功能。3.写一个程序,用来计算单词在一个文本文件中的重复出现的次数。4.Java数组的特点是什么?如何创建和使用对象数组。5.编写一个程序,使用二维数组来求解线性方程组。练习(练习(2)6.阅读下面的程序,看看是否存在问题,若存在问题,在不改变程序结构的基础上修改存在的错误,使其能够编译运行。/第6章习题6,Example6_6.java class Example6_6 public

21、static void main(String args)aArray=“I like Java!”,”Java is a language”.”We should learn it well!”;for(i=0;i=aArray.length;i+)System.out.prinln(aArrayi);System.out.prinln(aArrayi.toLowerCase();System.out.prinln(aArrayi.toUpperCase();练习(练习(3)7.用键盘输入一个字符串,编写程序统计此字符串中字母、空格和数字的个数。8.编写程序,完成打印输出杨辉三角,要求格式如下:1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 11 7 21 35 35 21 7 练习练习(4)9.编写程序,利用LinkedList来实现堆栈的操作。10.编写程序,利用LinkedList来实现队列的操作。练习练习(5)11.使用Interator类,把学习成绩存放在一个键表中,并用两种方法实现遍历链表,同时比较遍历速度(即用Iteratorlei和不使用这个类)。12.使用堆栈结构输出的若干项,其中 =2+2,且 =2,=6。na1a2a下课!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第6章数组字符串及容器类课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|