《最新Java与面向对象程序设计实验教程第6章 数组和集合类(共42张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新Java与面向对象程序设计实验教程第6章 数组和集合类(共42张PPT课件).pptx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象的程序设计第第 6 章章 数组和集合数组和集合(jh)类类 对外经济贸易大学信息对外经济贸易大学信息(xnx)学院学院第一页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎content6.1 数组数组6.2 集合框架集合框架6.3 枚举类型枚举类型(lixng)实验:数组实验:数组第二页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1 数组数组o 6.1.1 数组的声明数组的声明o 6.1.2 数组的创建数组的创建o 6.1.3 数组元素的初始化数组元素的初始化o 6.1.4 数组的引用数组的引用(ynyng)o 6.1.5 二维数组二维数组o 6.1.6 数组的排
2、序数组的排序第三页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎数组的概念数组的概念(ginin)o 数组由同一类型数组由同一类型(lixng)的一连串对象或基本的一连串对象或基本数据组成,封装在同一个标识符(数组名称数据组成,封装在同一个标识符(数组名称)下。)下。o 数组是对象数组是对象n 动态初始化动态初始化n 可以赋值给可以赋值给Object类型的变量类型的变量n 在数组中可以调用类在数组中可以调用类Object 的所有方法的所有方法第四页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎o 数组中的变量被称作数组的元素数组中的变量被称作数组的元素o 元素没有名字,通过数组
3、名字和非负整数下元素没有名字,通过数组名字和非负整数下标值引用标值引用(ynyng)数组元素。数组元素。o 每个数组都有一个由每个数组都有一个由 public final 修饰的修饰的成员变量:成员变量:length ,即数组含有元素的个,即数组含有元素的个数(数(length可以是正数或零)可以是正数或零)数组元素数组元素(yun s)第五页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.1 数组的声明数组的声明(shngmng)o 声明(声明(Declaration)n Type arrayName; 或者或者n Type arrayName ; n 声明数组时无需声明数组时
4、无需(wx)指明数组元素的个数,也不为指明数组元素的个数,也不为数组元素分配内存空间数组元素分配内存空间n 不能直接使用,必须经过初始化分配内存后才能使用不能直接使用,必须经过初始化分配内存后才能使用第六页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎数组声明数组声明(shngmng)的例子的例子n 例如例如(lr):n int myIntArray; n String myStringArray;n Circle myCircleArray;第七页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.2 数组的创建数组的创建(chungjin)arrayName=new Ty
5、pecomponets number;n 用关键字用关键字new构成数组的创建表达式,可以指构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量以是常量也可以是变量 n 基本类型数组的每个元素都是一个基本类型数组的每个元素都是一个(y )基本类基本类型的变量;引用类型数组的每个元素都是对象型的变量;引用类型数组的每个元素都是对象的的引用的的引用 第八页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎数组创建数组创建(chungjin)的例子的例子o例如:例如:int ai; aI=new int10;String
6、 aS; aS=new String3;Circle aC;aC=new Circle5o或者可以将数组的声明和创建或者可以将数组的声明和创建(chungjin)一并执行一并执行int ai=new int10;o 可以在一条声明语句中创建多个数组可以在一条声明语句中创建多个数组 String s1=new String3, s2=new String8;第九页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.3 数组元素数组元素(yun s)的初始化的初始化o 数组元素的类型与声明的数组数据类型保持数组元素的类型与声明的数组数据类型保持一致,每一个数组元素都相当于一个变量,一致,
7、每一个数组元素都相当于一个变量,进行需要对象初始化。进行需要对象初始化。o 基本类型的数组,可以在声明数组名时,给基本类型的数组,可以在声明数组名时,给出了数组的初始值。程序出了数组的初始值。程序(chngx)便会利用数便会利用数组初始值创建数组并对它的各个元素进行初组初始值创建数组并对它的各个元素进行初始化始化 。例如:。例如:int a=22, 33, 44, 55; 第十页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.3 数组元素数组元素(yun s)的初始化的初始化o 创建数组的时,如果没有指定初始值,数组创建数组的时,如果没有指定初始值,数组便被赋予默认值初始值。便被
8、赋予默认值初始值。 n 基本类型数值数据,默认基本类型数值数据,默认(mrn)的初始值为的初始值为0;n boolean类型数据,默认值为类型数据,默认值为false; n 引用类型元素的默认值为引用类型元素的默认值为null。 o 程序也可以在数组被构造之后改变数组元素程序也可以在数组被构造之后改变数组元素值值第十一页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎数组元素数组元素(yun s)初始化的例子初始化的例子int aI; aI=new int10;String aS; aS=new String3;Circle aC; aC=new Circle5;int k =0 ;fo
9、r(k=0;k10;k+) aIk = k*k;aS0 = aaa;aS1 = new String(bbb);aS3 = new String(ccc);for(k=0;k5;k+) aCk = new Circle();第十二页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.4 数组的引用数组的引用(ynyng) arrayName index o 数组下标限制数组下标限制n 下标从零开始计数,最大值为下标从零开始计数,最大值为 length 1,如果超过最大值,将会产生数组越界异常(如果超过最大值,将会产生数组越界异常(ArrayIndexOutOfBoundsExcept
10、ion)n 必须是必须是 int , short, byte, 或者或者 char.o 元素元素(yun s)的个数即为数组的长度,可以通的个数即为数组的长度,可以通过过 arrayName.length引用引用第十三页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎public class MyArray public static void main(String args) int myArray; /声明数组声明数组 myArray=new int10; /创建数组创建数组 System.out.println(IndexttValue); for(int i=0; imyArr
11、ay.length;i+) System.out.println(i+tt+myArrayi); /证明数组元素证明数组元素(yun s)默认初始化为默认初始化为0 /myArray10=100; /将产生数组越界异常将产生数组越界异常 数组引用数组引用(ynyng)例子例子第十四页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎数组变量名是一个数组变量名是一个(y )引用引用public class AA public static void main(String args) int a1 = 1, 2, 3, 4, 5 ; int a2; a2 = a1; for(int i =
12、0; i a2.length; i+) a2i+; for(int i = 0; i a1.length; i+) System.out.println( a1 + i + = + a1i);第十五页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.5 二维数组二维数组o 二维数组的声明二维数组的声明Type arrayName; 或者或者(huzh)Type arrayName ;o 二维数组的创建二维数组的创建arrayName = new Typelength1length2第十六页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎二维数组例子二维数组例子(l zi)n
13、int a1 ;o myArray 可以存储可以存储(cn ch)一个指向一个指向2维整数数组维整数数组的引用。其初始值为的引用。其初始值为null。n int a2=new int35 ;o 建立一个数组对象,把引用存储到建立一个数组对象,把引用存储到myArray。这。这个数组所有元素的初始值为零。个数组所有元素的初始值为零。n int a3=8,1,2,2,9, 1,9,4, 3, 7;o 建立一个数组并为每一个元素赋值。建立一个数组并为每一个元素赋值。第十七页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎二维数组的长度二维数组的长度(chngd)public class AA
14、public static void main(String args) int a3 = 1,2,3,3,4,5,6,7,8; System.out.println( a3.length); System.out.println( a30.length); System.out.println( a31.length); System.out.println( a32.length); 运行(ynxng)结果3324第十八页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎二维数组的实现二维数组的实现(shxin)过程过程int myArray;myArray = new int3 ;m
15、yArray0 = new int3;int x = 0, 2;int y = 0, 1, 2, 3, 4 ;myArray1 = x ; myArray2 = y ;第十九页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.1.6 数组的排序数组的排序(pi x)o 在在java的的API里面里面(lmin)实现了数组排序功实现了数组排序功能。在能。在java.util.Arrays类有静态方法类有静态方法sort就是实现这个功能。就是实现这个功能。第二十页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎public class Test6_5 public static vo
16、id main(String args) Student ss = new Student new Student(1, iven),new Student(2, tom), new Student(3, rose),new Student(3, jone) ;Arrays.sort(ss);for (int i = 0; i ss.length; i+) System.out.println(ssi);第二十一页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2 集合集合(jh)框架框架o 6.2.1 集合框架集合框架(kun ji)接口接口o 6.2.2 Collection接口
17、接口o 6.2.3 List接口接口o 6.2.4 Set接口接口o 6.2.5 Map接口接口o 6.2.6 Collection和和Arrayso 6.2.7 泛型泛型第二十二页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎集合集合(jh)框架框架o Java语言的设计者对常用语言的设计者对常用(chn yn)的数据结的数据结构和算法做了一些规范(接口)和实现(具构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结体实现接口的类)。所有抽象出来的数据结构和算法统称为构和算法统称为Java集合框架(集合框架(Java Collection Framework)
18、第二十三页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎第二十四页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2.1 集合框架集合框架(kun ji)接口接口o Java语言的设计者对常用的数据结构和算语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和算接口的类)。所有抽象出来的数据结构和算法统称法统称(tngchng)为为Java集合框架(集合框架(Java Collection Framework)第二十五页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2.1 集
19、合集合(jh)框架接口框架接口o Java2中的集合框架提供了一套设计优良中的集合框架提供了一套设计优良的接口和类,使程序员操作成批的数据或对的接口和类,使程序员操作成批的数据或对象元素极为方便。象元素极为方便。o 这些接口和类有很多对抽象数据类型操作的这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟,而这是我们常用的且在数据结构中熟知知(shzh)的。例如的。例如Maps,Sets,Lists,Arrays 等。等。第二十六页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎几种标准的集合几种标准的集合(jh)接口简化结构接口简化结构第二十七页,共四十二页。
20、面向对象的程序设计对外经济贸易大学 雷擎6.2.2 Collection接口接口(ji ku)o Collection是最基本的集合接口,一个是最基本的集合接口,一个Collection代表代表(dibio)一组一组Object,即,即Collection的元素(的元素(Elements)。)。o 所有实现所有实现Collection接口的类都必须提供两个标接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空准的构造函数:无参数的构造函数用于创建一个空的的Collection,有一个,有一个 Collection参数的构造参数的构造函数用于创建一个新的函数用于创建一个新的Col
21、lection,这个新的,这个新的Collection与传入的与传入的Collection有相同的元素。有相同的元素。第二十八页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎迭代迭代(di di)子子o 不论不论Collection的实际类型如何的实际类型如何(rh),它都,它都支持一个支持一个iterator()的方法,该方法返回一的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问个迭代子,使用该迭代子即可逐一访问Collection中每一个元素中每一个元素Iterator it = collection.iterator(); / 获得获得一个迭代子一个迭代子 while(it
22、.hasNext() Object obj = it.next(); /得到下一个元素得到下一个元素 第二十九页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2.3 List接口接口(ji ku)o List是有序的是有序的Collection,使用此接口能,使用此接口能够精确的控制每个元素够精确的控制每个元素(yun s)插入的位置。插入的位置。o 用户能够使用索引(元素在用户能够使用索引(元素在List中的位置)中的位置)来访问来访问List中的元素中的元素。o List允许有相同的元素。允许有相同的元素。第三十页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎o 除了具
23、有除了具有Collection接口必备的接口必备的iterator()方法外,方法外,List还提供一个还提供一个 listIterator()方法,返回一个方法,返回一个ListIterator接口,和标准的接口,和标准的Iterator接接口相比,口相比,ListIterator多了一些多了一些 add()之之类的方法,允许添加,删除,设定元素,还类的方法,允许添加,删除,设定元素,还能向前或向后遍历能向前或向后遍历(bin l)。o 实现实现List 接口的常用类有接口的常用类有LinkedList、ArrayList、Vector 和和Stack。第三十一页,共四十二页。面向对象的程序
24、设计对外经济贸易大学 雷擎6.2.4 Set接口接口(ji ku)o Set是一种不包含重复的元素的是一种不包含重复的元素的Collectiono Set接口的常用具体接口的常用具体(jt)实现有实现有HashSet和和 TreeSet类类第三十二页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2.5 Map接口接口(ji ku)o Map接口接口(ji ku)不是不是Collection接口的继承接口的继承。o Map接口用于维护键和值。该接口描述了接口用于维护键和值。该接口描述了从不重复的键到值的映射。从不重复的键到值的映射。o 一个一个Map中不能包含相同的键,每个键只中不能
25、包含相同的键,每个键只能映射一个值。能映射一个值。第三十三页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎o Map接口接口(ji ku)其特点是元素是成对出现的其特点是元素是成对出现的,以键和值的形式体现出来,键要保证唯一,以键和值的形式体现出来,键要保证唯一性:常用类有:性:常用类有:HashMap、Hashtable、TreeMap。第三十四页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2.6 Collections和和Arrayso 两个类提供了封装器实现、数据结构算法和两个类提供了封装器实现、数据结构算法和数组相关数组相关(xinggun)的应用。的应用。n C
26、ollections 类中定义了多种集合操作方法,类中定义了多种集合操作方法,实现了对集合操作方法,实现了对集合元素的实现了对集合操作方法,实现了对集合元素的排序、取极值、排序、取极值、 批量拷贝、集合结构转换、循批量拷贝、集合结构转换、循环移位以及匹配性检查等功能环移位以及匹配性检查等功能n Arrays类是对数组进行操作的工具类。可以用类是对数组进行操作的工具类。可以用一个数组生成一个对应的一个数组生成一个对应的List(asList),可),可以对数组元素进行排序(以对数组元素进行排序(sort)、查找()、查找(binarySearch)、比较)、比较 (equals)、填充)、填充(
27、fill),等等。),等等。第三十五页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.2.7 泛型泛型o 泛型的本质就是将所操作的数据类型参数泛型的本质就是将所操作的数据类型参数(cnsh)化,也就是说,该数据类型被指定为化,也就是说,该数据类型被指定为一个参数一个参数(cnsh)。o 在在Java中泛型主要是用来构建安全的集合中泛型主要是用来构建安全的集合第三十六页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎6.3 枚举枚举(mi j)类型类型o 举类型是一个常量集合的数据类型。因为都举类型是一个常量集合的数据类型。因为都是常量,所以一个枚举类型中的字段名都要是常量,所以
28、一个枚举类型中的字段名都要大写。在大写。在JAVA中,枚举类型的定义是通过中,枚举类型的定义是通过(tnggu)“enum”关键字进行的。关键字进行的。第三十七页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎小结小结(xioji)6.1 数组数组6.2 集合框架集合框架6.3 枚举枚举(mi j)类型类型第三十八页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎实验实验(shyn):数组:数组o 实验实验(shyn)10:数组:数组BACK第三十九页,共四十二页。面向对象的程序设计对外经济贸易大学 雷擎知识点提示知识点提示(tsh):o 理解理解n 数组是同类型对象的集合数组是同
29、类型对象的集合n 数组的元素是对象数组的元素是对象n 数组均需要声明、初始化后才能使用数组均需要声明、初始化后才能使用o 掌握掌握(zhngw)n 数组的定义、初始化和使用数组的定义、初始化和使用第四十页,共四十二页。面向对象的程序设计End of Chapter 6第四十一页,共四十二页。内容(nirng)总结第 6 章 数组和集合类。每个数组都有一个(y )由 public final 修饰的成员变量:length ,即数组含有元素的个数(length可以是正数或零)。System.out.println(IndexttValue)。System.out.println(i+tt+myArrayi)。i+) a2i+。System.out.println( a3.length)第四十二页,共四十二页。