Java与面向对象程序设计实验教程第6章 数组和集合类

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数组创建的例子
例如:
int[] ai;
wk.baidu.com
aI=new int[10];
String[] aS;
aS=new String[3];
Circle aC[];
aC=new Circle[5]
或者可以将数组的声明和创建一并执行 int ai[]=new int[10];
可以在一条声明语句中创建多个数组 String[] s1=new String[3], s2=new String[8];
数组下标限制
下标从零开始计数,最大值为 length – 1, 如果超过最大值,将会产生数组越界异常( ArrayIndexOutOfBoundsException)
必须是 int , short, byte, 或者 char.
元素的个数即为数组的长度,可以通过 arrayName.length引用
面向对象的程序设计
对外经济贸易大学 雷擎
数组元素初始化的例子
int[] aI; aI=new int[10]; String[] aS; aS=new String[3]; Circle aC[]; aC=new Circle[5];
int k =0 ; for(k=0;k<10;k++) { aI[k] = k*k; }
对外经济贸易大学 雷擎
6.2.5 Map接口
Map接口不是Collection接口的继承。 Map接口用于维护键和值。该接口描述了
Java语言的设计者对常用的数据结构和算 法做了一些规范(接口)和实现(具体实现 接口的类)。所有抽象出来的数据结构和算 法统称为Java集合框架(Java Collection Framework)
面向对象的程序设计
对外经济贸易大学 雷擎
6.2.1 集合框架接口
Java2中的集合框架提供了一套设计优良 的接口和类,使程序员操作成批的数据或对 象元素极为方便。
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.6 数组的排序
在java的API里面实现了数组排序功能。 在java.util.Arrays类有静态方法sort就 是实现这个功能。
面向对象的程序设计
对外经济贸易大学 雷擎
public class Test6_5 { public static void 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(ss[i]); } }
a1[3] =
for(int i = 0; i < a1.length; i++)
5
System.out.println( "a1[" + i + "] = " + a1[i]); a1[4] =
}
6
}
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.5 二维数组
二维数组的声明
Type[ ][ ] arrayName; 或者 Type arrayName[ ][ ];
不能直接使用,必须经过初始化分配内存后才能使 用
面向对象的程序设计
对外经济贸易大学 雷擎
数组声明的例子
例如: int[] myIntArray; String myStringArray[]; Circle myCircleArray[];
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.2 数组的创建
for(int i=0; i<myArray.length;i++)
System.out.println(i+"\t\t"+myArray[i]);
//证明数组元素默认初始化为0
//myArray[10]=100; //将产生数组越界异常
}
}
面向对象的程序设计
对外经济贸易大学 雷擎
数组变量名是一个引用
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.3 数组元素的初始化
数组元素的类型与声明的数组数据类型保持 一致,每一个数组元素都相当于一个变量, 进行需要对象初始化。
基本类型的数组,可以在声明数组名时,给 出了数组的初始值。程序便会利用数组初始 值创建数组并对它的各个元素进行初始化 。例如:int a[]={22, 33, 44, 55};
面向对象的程序设计
对外经济贸易大学 雷擎
二维数组的实现过程
int[ ][ ] myArray;
myArray = new int[3][ ] ;
myArray[0] = new int[3];
int[ ] x = {0, 2}; int[ ] y = {0, 1, 2, 3,
4} ; myArray[1] = x ; myArray[2] = y ;
System.out.println( a3.length); System.out.println( a3[0].length); System.out.println( a3[1].length); System.out.println( a3[2].length);
} }
运行结果 3 3 2 4
面向对象的程序设计
对外经济贸易大学 雷擎
6.2.3 List接口
List是有序的Collection,使用此接口能 够精确的控制每个元素插入的位置。
用户能够使用索引(元素在List中的位置) 来访问List中的元素。
List允许有相同的元素。
面向对象的程序设计
对外经济贸易大学 雷擎
除了具有Collection接口必备的 iterator()方法外,List还提供一个 listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接 口相比,ListIterator多了一些 add()之 类的方法,允许添加,删除,设定元素,还 能向前或向后遍历。
面向对象的程序设计
对外经济贸易大学 雷擎
面向对象的程序设计
对外经济贸易大学 雷擎
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.1 数组的声明
声明(Declaration)
Type[ ] arrayName; 或者 Type arrayName[ ];
声明数组时无需指明数组元素的个数,也不为数组 元素分配内存空间
二维数组的创建
arrayName = new Type[length1][length2]
面向对象的程序设计
对外经济贸易大学 雷擎
二维数组例子
int[ ][ ] a1 ;
myArray 可以存储一个指向2维整数数组的引用 。其初始值为null。
int[ ][ ] a2=new int[3][5] ;
aS[0] = "aaa"; aS[1] = new String("bbb"); aS[3] = new String("ccc");
for(k=0;k<5;k++) { aC[k] = new Circle(); }
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.4 数组的引用
arrayName[ index ]
实现List 接口的常用类有LinkedList、 ArrayList、Vector 和Stack。
面向对象的程序设计
对外经济贸易大学 雷擎
6.2.4 Set接口
Set是一种不包含重复的元素的 Collection
Set接口的常用具体实现有HashSet和 TreeSet类
面向对象的程序设计
面向对象的程序设计
对外经济贸易大学 雷擎
数组引用例子
public class MyArray {
public static void main(String[] args){
int myArray[];
//声明数组
myArray=new int[10];
//创建数组
System.out.println("Index\t\tValue");
集合框架
Java语言的设计者对常用的数据结构和算 法做了一些规范(接口)和实现(具体实现 接口的类)。所有抽象出来的数据结构和算 法统称为Java集合框架(Java Collection Framework)
面向对象的程序设计
对外经济贸易大学 雷擎
面向对象的程序设计
对外经济贸易大学 雷擎
6.2.1 集合框架接口
这些接口和类有很多对抽象数据类型操作的 API,而这是我们常用的且在数据结构中熟 知的。例如Maps,Sets,Lists, Arrays 等。
面向对象的程序设计
对外经济贸易大学 雷擎
几种标准的集合接口简化结构
面向对象的程序设计
对外经济贸易大学 雷擎
6.2.2 Collection接口
Collection是最基本的集合接口,一个 Collection代表一组Object,即 Collection的元素(Elements)。
所有实现Collection接口的类都必须提供两个 标准的构造函数:无参数的构造函数用于创建 一个空的Collection,有一个 Collection参 数的构造函数用于创建一个新的Collection, 这个新的Collection与传入的Collection有 相同的元素。
面向对象的程序设计
arrayName=new Type[componets number];
用关键字new构成数组的创建表达式,可以指 定数组的类型和数组元素的个数。元素个数可 以是常量也可以是变量
基本类型数组的每个元素都是一个基本类型的 变量;引用类型数组的每个元素都是对象的的 引用
面向对象的程序设计
对外经济贸易大学 雷擎
public class AA {
运行结果:
public static void main(String[] args) {
a1[0] =
int[] a1 = { 1, 2, 3, 4, 5 };
2
int[] a2;
a1[1] =
3
a2 = a1;
a1[2] =
4
for(int i = 0; i < a2.length; i++) a2[i]++;
对外经济贸易大学 雷擎
迭代子
不论Collection的实际类型如何,它都支持 一个iterator()的方法,该方法返回一个迭 代子,使用该迭代子即可逐一访问 Collection中每一个元素
Iterator it = collection.iterator(); // 获得 一个迭代子
while(it.hasNext()) { Object obj = it.next(); //得到下一个元素 }
面向对象的程序设计
对外经济贸易大学 雷擎
6.1.3 数组元素的初始化
创建数组的时,如果没有指定初始值,数组 便被赋予默认值初始值。
基本类型数值数据,默认的初始值为0; boolean类型数据,默认值为false; 引用类型元素的默认值为null。
程序也可以在数组被构造之后改变数组元素 值
}
面向对象的程序设计
对外经济贸易大学 雷擎
6.2 集合框架
6.2.1 集合框架接口 6.2.2 Collection接口 6.2.3 List接口 6.2.4 Set接口 6.2.5 Map接口 6.2.6 Collection和Arrays 6.2.7 泛型
面向对象的程序设计
对外经济贸易大学 雷擎
面向对象的程序设计
第 6 章 数组和集合类
对外经济贸易大学信息学院
content
6.1 数组 6.2 集合框架 6.3 枚举类型
实验:数组
面向对象的程序设计
对外经济贸易大学 雷擎
6.1 数组
6.1.1 数组的声明 6.1.2 数组的创建 6.1.3 数组元素的初始化 6.1.4 数组的引用 6.1.5 二维数组 6.1.6 数组的排序
建立一个数组对象,把引用存储到myArray。这 个数组所有元素的初始值为零。
int[ ][ ] a3={{8,1,2,2,9}, {1,9,4}, {3, 7}};
建立一个数组并为每一个元素赋值。
面向对象的程序设计
对外经济贸易大学 雷擎
二维数组的长度
public class AA {
public static void main(String[] args) { int[][] a3 = {{1,2,3},{3,4},{5,6,7,8}};
相关文档
最新文档