欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    回顾数组字符串向量与哈希表.ppt

    • 资源ID:6254997       资源大小:276KB        全文页数:59页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    回顾数组字符串向量与哈希表.ppt

    2023-10-10,1,04章 数组、字符串、向量与哈希表,知识点,2023-10-10,2,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023-10-10,3,数组,由相同类型的若干项数据组成例如:public static void main(String args)其中args是String类型的数组占用连续的内存地址数组的静态性一旦创建就不能修改数组的长度类似于动态数组的类型类Vector长度可以变大或缩小,2023-10-10,4,示例,int c=new int12;c 是数组名如何获得数组的长度?c.length第一个数组元素的下标为0 使用数组可以通过数组名与下标每个数组元素类似于普通的变量c 0=3;c 0+=5;,c.length,2023-10-10,5,下标,有时也称为索引必须是整数或整数表达式,例如:c11示例:含有运算符的下标表达式:if(x=3)t=(c 5-2=c 3)/t=true,2023-10-10,6,数组声明,一维数组变量的声明格式有如下两种:(1)数组元素的数据类型 变量名;(2)数组元素的数据类型 变量名;示例:int c;String names;int c;String names;,2023-10-10,7,内存分配,Java数组实际上也是对象,所以可通过new 关键字来创建示例:int c;/声明c=new int12;/创建对象,并分配内存声明时不必指定数组的大小上面的两个语句可以简化成一个语句int c=new int12;,2023-10-10,8,初始化数组,基本数据类型的元素初始化为0值或false非基本数据类型的元素初始化为null 可以采用循环结构初始化数组示例:double squares;squares=new double100;for(int i=0;i squares.length;i+)squaresi=i*i;,2023-10-10,9,通过初始化语句创建数组,Java语言允许通过数组的初始化语句创建数组示例:int n=10,20,30,40,50;上面语句创建了一个含有五个元素的数组下标值分别为0,1,2,3,4这时不需要运算符new,2023-10-10,10,注意事项,当通过循环遍历数组时下标永远不要低于0下标永远要比数组元素个数小当数组下标出错,Java 产生 ArrayIndexOutOfBoundsException,2023-10-10,11,多维数组,最常用的多维数组是二维数组 int a=new int34;二维数组可以理解成如下图示的表格,行的下标值,列的下标值,2023-10-10,12,示例 1,类似于一维数组进行二维数组的声明、创建(内存分配)与初始化示例:class J_FillArray public static void main(String args)int matrix=new int45;for(int row=0;row 4;row+)for(int col=0;col 5;col+)matrixrowcol=row+col;/内部for循环结束/外部for循环结束/方法main结束/类J_FillArray结束,2023-10-10,13,示例 2,通过初始化语句创建数组示例:double c=1.0,2.0,3.0,4.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0;,2023-10-10,14,注意事项,Java的多维数组实际上是数组的数组即创建以数组为元素的数组意味着:二维数组的每一行可以具有不同的列数示例:int a;a=new int 3;/allocate rowsa 0=new int 3;/allocate row 0a 1=new int 2;/allocate row 1a.length 行数a i.length 第i行列数,2023-10-10,15,三维数组,思维的扩展:一维数组二维数组三维数组示例:class J_Fill3DArray public static void main(String args)int M=new int453;for(int row=0;row 4;row+)for(int col=0;col 5;col+)for(int ver=0;ver 3;ver+)Mrowcolver=row+col+ver;/内部for循环结束/for循环结束/外部for循环结束/方法main结束/类J_Fill3DArray结束,2023-10-10,16,注意事项,Java允许数组的维数为:三、四、或更大但是,慎用高维数组甚至三维数组在实际的应用中也比较少出现,2023-10-10,17,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023-10-10,18,String的基本知识,String与C语言不同:字符(char)数组不是字符串(String)String数值不必以u0000结束,2023-10-10,19,String 直接量,String 直接量双引号括起来的字符序列示例:“Hello”或“您好字符串赋值可以在声明时赋值String c=blue;c是String类型的变量blue是String直接量,2023-10-10,20,String 构造,类 String共有11个构造方法,其中两个不被赞成使用(deprecated)参见docsindex.html,2023-10-10,21,示例,/J_StringConstructors.java;开发者:雍俊海/字符串构造方法例程public class J_StringConstructors public static void main(String args)String s1=null;String s2=new String();String s3=您好!;String s4=new String(s3);System.out.println(s1:+s1);System.out.println(s2:+s2);System.out.println(s3:+s3);System.out.println(s4:+s4);/方法main结束/类J_StringConstructors结束,2023-10-10,22,String 方法:length(),charAt()和 getChars(),方法 length()返回 String 的长度与数组不同之处:Strings不含有 length成员域方法charAt(int index)获得字符串指定位置的字符方法getChars(int srcBegin,int srcEnd,char dst,int dstBegin)拷贝字符串的部分字符序列到指定的字符数组的指定位置,2023-10-10,23,字符串比较,字符串(String)比较字符类型的数据也是数值类型数据比较字符串大小,实际上就是依次比较其所包含的字符的数值大小小写字母与大小字母是不相同的,2023-10-10,24,=运算符,当用于基本数据类型时,用于判别是否相等当用于引用数据类型时,用来判别引用是否指向相同的对象Java虚拟机中含有字符串池(直接量在此池内),相同内容的字符串直接量相同的对象s1=“hello”;/字符串直接量s2=new String(hello);s1=hello;/trues2=hello;/false,2023-10-10,25,字符串(String)比较方法,boolean equals(Object anObject)比较当前的字符串与指定的对象比较结果为真当且仅当给定的参数不为空,并且具有完全相同的字符序列 例如:s1.equals(Hi);boolean equalsIgnoreCase(String anotherString)判别相等,但不区分大小写例如:在不区分大小写情况下,“hello”与“HELLO”相等,2023-10-10,26,字符串(String)比较方法,int compareTo(String anotherString)比较两个字符串的内容返回:0:如果字符串内容完全相同小于0的值:如果在比较第一个不相同字符,当前字符串的字符的值小于anotherString对应的字符的值大于0的值:如果在比较第一个不相同字符,当前字符串的字符的值大于anotherString对应的字符的值int compareToIgnoreCase(String str)比较两个字符串的内容,但不区分大小写,2023-10-10,27,查找字符串中的字符或子串,查找字符串(String)中的字符或子串方法indexOf四种重载方法 indexOf返回第一次找到的时下标如果没有找到,则返回-1示例:String name=CoolTools;System.out.println(name.indexOf(oo);,2023-10-10,28,查找字符串中的字符或子串,方法 lastIndexOf public int lastIndexOf(int ch,int fromIndex)从指定位置往回查找,返回找到的最大的字符下标位置即返回满足下面条件的最大值:(this.charAt(k)=ch)&(k=fromIndex)返回-1:如果当前字符串不含该字符,2023-10-10,29,从当前字符串中抽取子字符串,方法 substringsubstring(int beginIndex)返回新的字符串:当前字符串的子串该子串从指定的位置开始,并一直到当前字符串结束为止substring(int beginIndex,int endIndex)返回新的字符串:当前字符串的子串该子串从指定的位置(beginIndex)开始,到指定的位置(endIndex-1)结束,2023-10-10,30,字符串(String)拼接,方法 concat拼接两个字符串,并返回一个新字符串源字符串不会被修改s1.concat(s2)返回字符串s1和s2拼接的结果示例:String s1=ABC;String s2=XYZ;s1=s1.concat(s2);/s1=s1+s2;,2023-10-10,31,类String的成员方法valueOf,静态(static)成员方法valueOf将参数的值转化成相应的字符串valueOf(char data)return new String(data);valueOf(char data,int offset,int count)return new String(data,offset,count);其它valueOf方法的参数的类型:boolean、char、int、long、float、double和Object对象还可以通过方法toString转化成字符串,2023-10-10,32,其它String方法,其它String方法s1.replace(char1,char2)返回一个新的字符串,它是将s1中的所有char1替换成的结果char2源字符串没有发生变化如果s1不含char1,则返回源字符串的引用,即s1示例:“mesquite in your cellar”.replace(e,o)结果返回 mosquito in your collar“JonL”.replace(q,x)结果返回“JonL”(没有发生变化),2023-10-10,33,其它String方法,s1.toUpperCase返回对应的新字符串,各个字母都是大写的如果没有字符被修改,则返回源字符串的引用类似方法s1.toLowerCase练习:请试着分析方法toUpperCase是如何实现的?,2023-10-10,34,其它String方法,s1.trim()返回新字符串,源字符串最前面和最后面的的空白符如果字符串没有被改变,则返回源字符串的引用s1.toString()由于s1本身就是字符串了,所以返回s1本身其它引用类型也可以通过方法toString,生成相应的字符串s1.toCharArray()将字符串转换成字符数组,2023-10-10,35,其它String方法,方法intern返回具有相同内容的字符串的引用如果字符串池含有该内容的字符串,则返回字符串池中具有该内容的字符串的引用如果字符串池没有字符串的内容与其相同,则在字符串池中创建具有该内容的字符串,再返回新创建的字符串的引用字符串池组成:字符串直接量 以及 由方法intern产生的字符串字符串池中的字符串s与t:s与t具有相同内容(s.equals(t)当且仅当指向s与t的同一个字符串(s.intern()=t.intern()可以采用这个机制加速字符串是否相等的判定,2023-10-10,36,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023-10-10,37,类StringBuffer,类 String字符串(String)对象一旦创建,其内容不能再被修改(read-only)类 StringBufferStringBuffer 对象的内容是可以被修改的除了字符的长度之外,还有容量的概念通过动态改变容量的大小,加速字符管理,2023-10-10,38,三种 StringBuffer构造方法,buf1=new StringBuffer();创建空的StringBuffer对象容量为16字符buf2=new StringBuffer(capacity);创建空的StringBuffer对象指定容量大小buf3=new StringBuffer(myString);创建含有相应字符序列的StringBuffer对象容量为myString.length()+16示例:StringBuffer b=new StringBuffer(hello);,2023-10-10,39,String 和 StringBuffer,String 和 StringBuffer 是两种不同的类不能用字符串(String)的示例对象调用类(StringBuffer)的成员方法反之亦然String StringBuffer构造方法StringBuffer String构造方法 方法 toString(),2023-10-10,40,StringBuffer 方法,方法 length()返回 StringBuffer 的长度方法 capacity()返回StringBuffer 的容量方法 setLength(int newLength)增加或减小 StringBuffer 的长度,2023-10-10,41,方法 ensureCapacity(int minimumCapacity),参见在线帮且文档阅读方法ensureCapacity的切确含义确保StringBuffer对象的容量至少为指定的大小如果当前容量比指定值(minimumCapacity)小,则重新分配内存新容量大小为如下的值中较大者:参数minimumCapacity 的值.两倍的旧容量,再加上2.如果minimumCapacity的值比已有容量小,则不做任何操作,直接返回,2023-10-10,42,处理StringBuffer内字符的方法,方法 charAt(int index)返回StringBuffer 对象中指定位置的字符方法setCharAt(int index,char ch)设置 StringBuffer对象中指定位置的字符方法 getChars(int srcBegin,int srcEnd,char dst,int dstBegin)将StringBuffer对象中指定的字符子序列,拷贝到指定的字符数组(dst)方法 reverse()将StringBuffer 对象中的字符序列按逆序方式排列,2023-10-10,43,11 种 append 方法,允许数值类型的值添加到StringBuffer对象中示例:public String reverseIt(String source)int c;len=source.length();StringBuffer dest=new StringBuffer(len);for(c=(len-1);c=0;c-)dest.append(source.charAt(c);return dest.toString();,2023-10-10,44,insert 和 delete 方法,方法insert允许将各种数据插到StringBuffer对象的指定位置方法 delete(int start,int end)和 deleteCharAt(int index)允许删除StringBuffer对象中的指定字符,2023-10-10,45,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023-10-10,46,向量,向量所对应的类是类向量变量的声明格式Vector 变量名;示例Vector vs;,2023-10-10,47,创建向量实例对象,Vector vs=new Vector();Vector vo=new Vector();,2023-10-10,48,增加元素,public boolean add(E o)public void addElement(E obj)示例vs.add(Tom);,2023-10-10,49,修改元素,public E set(int index,E element)public void setElementAt(E obj,int index),2023-10-10,50,删除元素,public void clear()public void removeAllElements()public E remove(int index)public void removeElementAt(int index),2023-10-10,51,通过迭代器(iterator)获取向量对象的各个元素,类的成员方法public Iterator iterator()接口的成员方法boolean hasNext()接口的成员方法E next(),2023-10-10,52,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023-10-10,53,哈希函数或散列函数,示例h1(s)=s0*31(n-1)+s1*31(n-2)+.+sn-1哈希码(hash code)或散列索引由哈希函数计算出来的数值,2023-10-10,54,哈希表的空间利用率,哈希表的容量(capacity)哈希表的存储空间大小哈希表的装填因子,2023-10-10,55,哈希表类,2023-10-10,56,示例,/J_Hashtable.java;开发者:雍俊海/通过哈希表形成数组下标与值之间的双向映射。import;public class J_Hashtable public static void main(String args)String sa=Mary,Tom,John,James,Louis,Jim,Rose,Ann,Liza,Betty,Henry,Albert;Hashtable ht=new Hashtable();,2023-10-10,57,示例,/往哈希表中添加元素,并使得关键字与值之间建立起映射关系 int i;for(i=0;i sa.length;i+)ht.put(sai,new Integer(i);/通过下标获得姓名(字符串值)i=8;(在sa数组中,下标为+i+的字符串是+sai+);/通过哈希表,直接获得姓名(字符串值)的数组下标 String s=sai;System.out.println(在sa数组中,+s+的下标是+ht.get(s);/方法main结束/类J_Hashtable结束,2023-10-10,58,编译,运行&输出,2023-10-10,59,

    注意事项

    本文(回顾数组字符串向量与哈希表.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开