城院 面向对象程序设计 集合框架与泛型实验报告

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

浙江大学城市学院实验报告

课程名称面向对象程序设计

实验项目名称集合框架与泛型

学生姓名专业班级学号

一. 实验目的和要求

1. 了解Java集合框架的接口和实现类

2. 理解泛型类、泛型接口、泛型方法的特点

3. 掌握List接口及其实现类LinkedList、ArrayList

4. 了解Set接口及其实现类HashSet、TreeSet

5. 了解Map及其实现类HashMap、TreeMap

二. 实验内容

1. 分析Java集合框架的接口和实现类的组成

2. 分析泛型类、泛型接口、泛型方法的特点

3. 编程实现:设计学生管理类StudentManager(用List集合管理学生对象)

4. 选作-编程实现:设计学生管理类StudentManager(用Set集合管理学生对象)

5. 选作-编程实现:设计学生管理类StudentManager(用Map管理学生对象)

三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)

1. 分析Java集合框架的接口和实现类的组成

请查阅书籍和Java帮助文档,说明Java集合框架的接口组成以及它们的继承关系,并针对每个接口给出具体的实现类。

答:collection 的子接口有list(linkedlist and rrarlist) set(treeset and hashset and linkedhashset)queue(linkedlist and queue)

Map的子接口有sortedmap (hashmap and treemap and linkedhashmap)

Iterator接口的作用是集合元素的遍历,collection接口定义的iterator方法会返回iterator类型的对象,这意味着所有集合都可利用iterator对象进行元素的遍历。

Listiterator接口从iterator接口拓展,并加入了与list集合相关的方法,list接口的listiterator方法会返回listiterator类型对象。

2. 分析泛型类、泛型接口、泛型方法的特点

请查阅书籍和Java帮助文档,举例说明泛型类、泛型接口、泛型方法的特点。

答:泛型接口:

interface testGenerics{ T getT(T t); String assume(T t); }

泛型类:

public class GenericsFoo { private T x;

public GenericsFoo(T x) { this.x = x; }

public T getX() { return x; }

public void setX(T x) { this.x = x; } }

使用来声明一个类型持有者名称,然后就可以把T当作一个类型代表来声明成员、参数和返回值类型。

当然T仅仅是个名字,这个名字可以自行定义。

泛型方法:

是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。如:

public class ExampleA {

public void f(T x) {

System.out.println(x.getClass().getName()); } }

使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。

3. 编程实现:设计学生管理类StudentManager(用List集合管理学生对象)。

StudentManager类的功能包括添加学生、查询学生、删除学生、统计学生成绩等。需要设计表示学生对象的Student类,并用LinkedList或ArrayList集合来管理可被数量的学生对象。另外还需要设计测试类Test来验证StudentManager的功能。

import java.util.*;

class StudentManager{

private String id ,name;

private int score;

public StudentManager(String id,String name,int score){

this.id=id;=name;

this.score=score;

}

public String toString(){

return "\nid=" +id+" name=" +name+" score=" +score;

}

public int getscore(){

return score;

}

}

class Student extends StudentManager{

public Student(String id, String name, int score) {

super(id, name, score);

// TODO Auto-generated constructor stub }

}

public class example {

public static void main(String[] args){

Student student1=new Student("001","张三",83);

Student student2=new Student("002","李四",64);

Student student3=new Student("003","王五",95);

Student student4=new Student("004","赵六",76);

Student student5=new Student("005","钱七",77);

Listlist1=new LinkedList();

list1.add(student1);

list1.add(student2);

list1.add(student3);

list1.add(student4);

list1.add(student5);

printList(list1);

Scanner scanner=new Scanner(System.in);

System.out.print("请输入要添加学生的学号:\n");

String a=scanner.nextLine();

System.out.print("请输入要添加学生的姓名:\n");

String b=scanner.nextLine();

System.out.print("请输入要添加学生的分数:\n");

int c=scanner.nextInt();

Student student6=new Student(a,b,c);

list1.add(student6);

printList(list1);

System.out.print("删除id为002的学生:\n");

for(int i=0;i

{

if(list1.get(i).equals(student2))

list1.remove(i);

}

printList(list1);

System.out.print("查询id为003的学生:\n");

for(int i=0;i

{

if(list1.get(i).equals(student3))

相关文档
最新文档