搜档网
当前位置:搜档网 › 实验5 泛型

实验5 泛型

实验5 泛型
实验5 泛型

实验5 泛型

一、实验名称和性质

二、实验目的

1.理解为什么泛型类型可以提高可靠性和可读性;

2.了解通配符类型并理解为什么有必要使用该类型;

3.理解泛型类的所有实例共享同一个运行类文件。

三、实验内容

1.构建两个ArrayList对象list1,list2,往两个对象中各添加两个元素(如输入1,2),并输出(验证性内容)。

2. 应用泛型编写程序(设计性内容)。

四、实验的软硬件环境要求

硬件环境要求:

PC计算机;内存512MB以上

使用的软件名称、版本号以及模块:

操作系统:Windows 2000或Windows XP

软件:JDK 6.0;Eclipse

五、知识准备

前期要求掌握的知识:掌握线性表和接口。

实验相关理论或原理:泛型是参数化类型的能力。表示形式泛型类型,后面可以用一个实际具体类型代替它。泛型类型必须是引用类型。

六、验证性实验

1.实验要求

构建两个ArrayList对象list1,list2,往两个对象中各添加两个元素(如输入1,2),并输出。

输出结果如图5.1所示:

图5.1 线性表的使用

2.源程序代码参考

import java.util.ArrayList;

public class Generic {

/**

* 泛型应用测试

*/

public Generic(){

ArrayList list1 = new ArrayList();

ArrayList list2 = new ArrayList< Integer >();

list1.add(“1”);

list1.add("2");

list2.add(1);

list2.add(2);

System.out.println(list1.toString());

System.out.println(list2.toString());

}

//程序入口main方法

public static void main(String[] args) {

new Generic();

}

}

七、设计性实验

1. 使用选择排序法实现泛型选择排序法,方法头定义如下:

public static > void selectionSort(E[] list),运行结果如5.2所示

图5.2 运行结果

提示:假设第一个值为最大值,定义为:E currentMax = list[0];

最大值的索引为int currentMaxIndex = 0;

代码:

package zlfg;

import java.util.*;

public class Select {

public static void main(String[] args){

Integer[] list1 = new Integer[5];

Scanner in = new Scanner(System.in);

System.out.print("请输入一个整数,即数组的大小:");

int length = in.nextInt();

System.out.println("请输入" + length +"个整数:");

for(int i = 0 ; i < length ; i ++)

list1[i] = (Integer)in.nextInt();

System.out.println();

Select.selectionSort(list1);

for(int i = 0 ; i < length ; i++)

System.out.print(list1[i] + " ");

}

public static> void selectionSort(E[] list){

for(int i = 0 ; i

int currentMaxIndex = i;

E currentMax = list[i];

for(int j = i + 1 ; j < list.length ; j ++){

if(list[j].compareTo(list[currentMaxIndex]) > 0 )

currentMaxIndex = j ;

}

list[i] = list[currentMaxIndex];

list[currentMaxIndex] = currentMax;

}

}

}

结果:

请输入一个整数,即数组的大小:5

请输入5个整数:

8 7 5 9 1

9 8 7 5 1

2.请应用泛型编写程序。首先定义一个接口H_shape,它至少包含一个可以计算面积的成员方法。然后编写实现该接口的两个类:正方形类H_rectangle和圆类H_circle。接着编写一个有泛型特点的类,要求利用这个类可以在控制台窗口中输出某种图形的面积,而且这个类的类型变量所在控制台窗口中分别输出给定边长的正方形的面积和给定半径的圆的面积。矩形左上角和右下角坐标点分别为(1,1),(4,4)。

结果如图5.3所示:

图5.3图形的面积

提示:

public class H_Fanxing

{

public static void main(String args[ ])

{

double r = 5 ;

H_Fanxing a = new H_Fanxing();

System.out.println("圆的面积是"+a.sg_AreaB(new H_circle(r)));

double x1 = 1,y1 = 1, x2 = 4,y2 = 4;

H_Fanxing b = new H_Fanxing();

System.out.println("矩形面积是"+b.sg_AreaB(new H_rectangle(x1, y1, x2, y2))); } // 方法main结束

public double sg_AreaB(T t){

return (t.sg_getArea());

}

}

代码:

package zlfg;

public interface H_shape {

public abstract double sg_AreaB(T t);

}

package zlfg;

public class H_rectangle implements H_shape{ private int x1,x2,y1,y2;

public H_rectangle(int x1,int y1,int x2,int y2){ this.x1 = x1;

this.y1 = y1;

this.x2 = x2;

this.y2 = y2;

}

public double sg_AreaB(Object t) {

return 0;

}

}

结果:

浅谈c# 泛型类的应用分析

浅谈c# 泛型类的应用 本篇文章是对c#中泛型类的应用进行了详细的分析介绍,需要的朋友参考下 泛型类 泛型类封装不是特定于具体数据类型的操作。泛型类最常用于集合,如链接列表、哈希表、堆栈、队列、树等。像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。对大多集合类的操作,推荐使用.NET Framework 类库中所提供的类。 (1)泛型类可以继承具体类、封闭式构造、开放式构造基类。 复制代码代码如下: class BaseNode { } class BaseNodeGeneric { } // 继承具体类 class NodeConcrete : BaseNode { } //继承封闭式构造基类 //封闭式构造基类指基类类型参数指定具体类型 class NodeClosed : BaseNodeGeneric { } //继承开放式构造基类 //开放式构造基类指基类类型参数未指定 class NodeOpen : BaseNodeGeneric { } (2)基类类型参数必须在子类中指定实现。 复制代码代码如下: //正确 class Node1 : BaseNodeGeneric { } //错误 //在子类中未指定父类类型参数实现 class Node2 : BaseNodeGeneric {} //错误 //在子类中未指定父类类型参数实现 class Node3 : T {} class BaseNodeMultiple { } //正确 class Node4 : BaseNodeMultiple { } //正确

实验十 泛型与集合框架

实验十泛型与集合框架 1.实验目的 1、掌握LinkedList类和Collections类提供的用于排序和查找链表中 的数据的方法 2、掌握用散列映射来存储数据 3、掌握TreeSet类的使用 2.实验内容 1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行 得出结果。 1)实验1 按身高排序 2)实验2 英汉小字典 3)实验3 演出节目单 4)实验4输出args[]中的单词 2、设计编写程序完成以下任务。 1)仿照实验1编写TV类,要求通过实现Comparable接口规定该类的对象的大小关系,按price值得大小确定大小关系,即电视机按其价格确定之间的大小关系。 2)从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来。 知识点:List接口的实现类、String常用方法 3)请使用LinkedList来模拟一个队列(先进先出的特性): (1)拥有放入对象的方法void put(Object o) (2)取出对象的方法Object get() (3)判断队列当中是否为空的方法boolean isEmpty();并且,编写测试代码,验证你的队列是否正确。 知识点:List接口的实现类LinkedList常用方法 4)在一个列表中存储以下元素:apple,grape,banana,pear (1)返回集合中的最大的和最小的元素 (2)将集合进行排序,并将排序后的结果打印在控制台上 知识点:Collections类中的方法 3.实验步骤 略 4.评分标准 1.A——内容功能完善,编程风格好,人机接口界面好; 2.B——内容功能完善,编程风格良好,人机接口界面良好;

课后答案——C++语言程序设计教程(第二版)

1.1习题1解答 1. (1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助记符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。 (2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。 (3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.c p p扩展名。接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。 在此之前,预编译器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。 连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。若程序运行进程中出现了错误,还在需要对程序进行调试。 (4)对象与对象之间通过消息进行相互通信。 (5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。(6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。 (7)面向对象的软件开发过程主要包括面向对象的方法分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。 (8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程

序。 (9)#include是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将iostream文件包含(复制)到指令处。 (10)C++中使用cin作为标准输入流对象,通常代表键盘,与提取操作符>>连用;使用cout作为标准输出流对象,通常代表显示设备,与<<连用。 2.简答题 (1)叙述机器语言、汇编语言、高级语言的特点。 机器语言是计算机直接执行的语言,由二进制的0和1构成的一系列指令组成; 汇编语言是机器语言的助记符; 高级语言是接近人的自然语言习惯的编程语言,通过编译变成机器语言。 (2)结构化的语言与面向对象的语言是截然分开的吗? 不是截然分开的,面向对象的程序设计中也包含过程,含有结构化的思想。 (3)C编写的程序不加修改就可以在C++编译器中编译。 (5)C++程序通过编译变成带扩展名.obj的目标文件;再通过连接变成带扩展名.exe的可执行文件。 (6)如果要求不使用include包含头文件,有什么办法使程序正常编译运行? 在相应的文件夹(子目录)中,找到需要包含的头文件,将头文件复制到包含处。 3.单选 C++语言程序能够在不同操作系统下编译、运行,说明C++具有良好的移植性。 (可以说C++语言完全兼容C语言,但是在这不能说C++语言程序能兼容不同的操作系统;对于计算机硬件,一般使用“兼容”一词,对于程序使用“移植”)。 (3)#include语句在程序运行前就执行了。

《集合框架及泛型》上机实践内容

《集合框架及泛型》作业 一、根据课上讲解内容,完成演示示例和课堂练习 1、ArrayList获取并打印新闻标题 需求说明:按照以下实现的步骤,使用ArrayList获取和打印新闻标题,显示效果如下图所示: (1)创建多个各类新闻标题对象,包含ID、名称和创建者三个属性; (2)创建存储各类新闻标题的集合对象; (3)按照顺序依次添加各类新闻标题,使用add()方法; (4)获取新闻标题的总数,使用size()方法; (5)根据位置获取相应新闻标题、逐条打印每条新闻标题的名称,使用for 循环遍历。 2、ArrayList存储狗狗信息 需求说明:按照以下实现的步骤,使用ArrayList存储狗狗信息,使用ArrayList的方法对狗狗信息进行删除、读取和判断,显示效果如下图所示:(1)存储多条狗信息,获取狗总数,逐条打印出各条狗信息; (2)删除指定位置的狗,使用remove()方法; (3)判断集合中是否包含指定狗,使用contains()方法;

3、LinkedList添加和删除新闻标题 需求说明:在作业1的基础上,换用LinkedList存储新闻数据,并且使用LinkedList的getFirst()和getLast()方法获取第一条和最后一条数据,以及removeFirst()和removeLast()方法删除第一条和最后一条数据,输出效果如下图所示。 4、集合头尾位置删除和条件狗信息 需求说明:按照作业3的实现方式和所用到LinkedList的方法,实现狗狗信

息的更新并输出,输出效果如图所示。 5、使用Iterator和增强型for循环遍历Set 需求说明:按照以下实现的步骤,使用Iterator和增强型for循环遍历Set,输出效果如下图所示: (1)创建多个各类新闻标题对象,包含ID、名称和创建者三个属性; (2)创建存储各类新闻标题的集合对象; (3)按照顺序依次添加各类新闻标题; (4)获取新闻标题的总数; (5)使用iterator()获取Iterator对象; (6)使用Iterator遍历集合,使用hasNext()方法作为循环条件,判断是否存在另一个可访问的元素; (7)使用增强型for遍历集合;

java简答(无答案版)

1、JDBC编程的主要步骤有那些? 答:选择并加载一个合适的JDBC驱动程序; 创建一个Connection对象,建立与数据库的链接; 创建一个Statement对象,用该Statement对象进行数据库的操作; 从返回的ResultSet中获取相应数据。 2、什么是标准的输入输出流? 答:system.in 标准输入流system.out.标准输出流system.err标准错误输出 3、抽象类的特点和用途? 答:抽象类不能创建对象,只能作为其他类的父类; 抽象类的作用: 1、表示抽象的概念,如动物, 2、建立类之间的关系 3、为实现某一接口的单一功能,抽象类中的抽象方法可以不要全部实现 4、Java的GUI事件处理模型的编程步骤有那些? 5、什么是对象流和序列化? 答:对象流是一种以字节流为基础的可用于持久化保存对象的机制; 序列化是指将java对象转化为字节序列的过程 6、Java语言如何进行异常处理? 7、编写JDBC应用程序通用的步骤有哪几个? 8、什么是Java的GUI事件处理机制? 答:事件响应是GUI程序设计的关键部分,所谓的事件响应就是通过调用与事件关联的方法来处理执行事件。Java事件处理机制把事件源、事件监听器、事件对象三个基本要素联系起来了,包含了对事件进行监听、发生事件、通知监听器以及处理整个事件的流程。 9、类的重用方式有几种?分别如何实现?, 答:继承和组合;java只支持单继承,每个子类都只能有一个直接父类,子类可以继承父类的数据成员和方法,也可以增加新的变量和方法,还可以覆盖继承的方法,通过关键字extends来实现。组合也称为聚合,指java的类中可以包含其他类的对象作为数据成员,是一种包含关系。 10、如何理解Java中包的概念? 11、类的访问控制有哪几种,各有和作用? 答:public: Protected: Private: 包 12、多态机制实线的条件? 答:1、必须是继承关系的类; 2、首先要把子类对象向上转型为父类对象,然后用父类对象调用同名的方法, 系统才能通过动态绑定自动识别调用的方法所属的类; 3、对象的使用者只保持与父类接口通信。 13、终结类和终结方法的特点和用途? 14、反射机制可以用来在程序运行时得到对象的类的那些信息? 答:它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法。Reflection机制允许程序在正在执行的过程中,利用Reflection APIs取得任何已知名称的类的

实验11泛型与集合

实验内容: (1)定义一个泛型类Instrument,其中包括一个泛型方法void play(E x)。定义两种乐器类:Cello、Violin 可以进行演奏。定义一个测试类进行测试。 package ex111; public class Violin { public String toString() { System.out.println("violin........."); return ""; } } package ex111; public class Test_Main { public static void main(String[] args) { instrumentmodel = new instrument(); instrumentmodel1 = new instrument(); Cello cello = new Cello(); Violin violin = new Violin(); model.play(cello); model1.play(violin); } } package ex111; class instrument {//泛型类 void play(E x) { x.toString(); } } package ex111; public class Cello { public String toString(){ System.out.println("cello........."); return ""; } } (2)输入10 个数字保存到List 中,并按倒序显示出来。 package ex112; import java.util.ArrayList; import java.util.Collections;

第8章_泛型编程习题_参考答案

《面向对象程序设计》习题 第8章泛型编程 一、选择题(共40分,每题2分) 二、填空题(共20分,每空2分) 1. 逻辑数据类型 2. 函数类 3. 函数模板类模板 4.函数类型形参类型 5.2 6. 尖括号 三、下列程序有2个错,找出并修改(共6分) 错1:public: A(T a, b) // A(T a,T b) {x=a,y=b;s=x+y;} 错2: int main() { A add(10,100); // A add(10,100); add.show(); return 0; } 四、看程序写结果(共12分,每题4分) 1. 2. 3.

五、编程题(22分) 1.设计一个函数模板,实现两数的交换,并用int、float、double、char类型的数据进行测试。 #include #include using namespace std; template void change(T &x, T &y) { T temp; temp=x; x=y; y=temp; } int main() { int a=12, b=34; float c=1.1, d=2.2; double e=1.23456789, f=2.23456789; char u='A', v='B'; cout<<"交换前:a="<model = new instrument(); in strume ntvVioli n> model1 = new in strume ntvVioli n>(); Cello cello = new Cello(); Violin violin = new Violi n(); model.play(cello); model1.play(violi n); } } package ex111; class in strume nt {//泛型类void play(E x) { x.toStri ng(); } } package ex111; public class Cello { public Stri ng toStri ng(){ System.out.println("cello ....... "); return ""; } } (2)输入10个数字保存到List中,并按倒序显示出来 package ex112; import java.util.ArrayList; import java.util.Collectio ns; import java.util.List; import java.util.Sca nner; public class Test{ public static void main(final String[] args) { final List< In teger> in tegers = new ArrayListvl nteger>(); final Scanner sca nner = new Scann er(System.i n); for (int i = 1; i <= 3; i++) {

C++程序设计教学大纲(李秉璋)

《C++程序设计》课程教学大纲 课程名称:C++程序设计课程代码: 课程类型:专业必修课 学分:4 总学时:64 理论学时:48 上机学时:16 先修课程:计算机应用能力、C语言程序设计 适用专业:计算机科学与技术 一、课程性质、目的和任务 面向对象程序设计是计算机科学与技术专业开设的主干课之一。本课程既可为其它专业课程的学习提供理论基础,同时也使学生对程序设计的方法有深刻的理解,是计算机学科教育不可缺少的组成部分。 通过本课程学习,能使学生在掌握一种面向对象程序设计语言的基础上,掌握面向程序设计的方法,在了解面向对象一般开发过程的基础上,掌握面向对象的典型设计方法,学会分析比较不同的设计方案,培养学生解决实际问题的能力,提高编程技能。 二、教学基本要求 1、知识、能力、素质的基本要求 本门课程主要讲述了C++面向对象的基本特性,包括类、对象、派生类、继承、多态性、虚函数、模板、流类库,使学生能够深刻理解和领会面向对象程序设计的特点和风格,掌握其方法和要领。 主要培养学生通过C++语言解决实际问题的能力,对逻辑思维能力、表达能力和C++熟练运用能力要求较高,学习过程中应注意培养这方面的能力。 2、教学模式基本要求(课程主要教学环节要求,教学方法及手段要求) 理论教学要通过计算机多媒体投影手段授课,利用计算平台形象化教学,便于安排演示实验、有效地组织教学,便于学生理解课程内容、掌握基本概念、原理与基本技术。注意加强理论联系实际,在课堂教学中结合项目开发实际,给出知识点的实际应用案例。 授课中要注意采用重点突出、难点分散的方法,引导学生从感性认识上升到理论认识。在演示实验与学生实验中,应注意培养学生依据理论去指导实践的素养,也应注意运用对比、模拟等方法加强理论教学环节。要关注学生的基础,适时、适当地补充相关的教学内容,以助于学生理解课程内容。

看一下Java泛型的设计

从零开始来看一下Java泛型的设计 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。 作者:ziwenxie来源:ziwenxie|2017-03-03 10:37 收藏 分享 引言 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java 泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。 泛型基础 泛型类 我们首先定义一个简单的Box类: public class Box {

private String object; public void set(String object) { this.object = object; } public String get() { return object; } } 这是最常见的做法,这样做的一个坏处是Box里面现在只能装入String类型的元素,今后如果我们需要装入Integer 等其他类型的元素,还必须要另外重写一个Box,代码得不到复用,使用泛型可以很好的解决这个问题。 public class Box { // T stands for "Type" private T t; public void set(T t) { this.t = t; } public T get() { return t; } } 这样我们的Box类便可以得到复用,我们可以将T替换成任何我们想要的类型: Box integerBox = new Box(); Box doubleBox = new Box(); Box stringBox = new Box(); 泛型方法 看完了泛型类,接下来我们来了解一下泛型方法。声明一个泛型方法很简单,只要在返回类型前面加上一个类似的形式就行了: public class Util { public static boolean compare(Pair p1, Pair p2) { return p1.getKey().equals(p2.getKey()) && p1.getValue().equals(p2.getValue()); } }

实验八泛型程序设计

实验八泛型程序设计 软件1502 杨成进 0 一、实验目的 1.了解链表类的定义与实现,学习其使用方法。 2.了解栈类的定义与实现,学习其使用方法。 3.了解队列类的定义与实现,学习其使用方法。 4.了解C++标准模板库STL的使用方法。 二、实验任务 1.编写程序link.h,实现教材中例9—6的链表类。在测试程序lab9—1.cpp中定义两个整型链表A和B,分别插入5个元素,然后把B中的元素加入A的尾部。 2.编写程序queue.h,用链表实现队列(或栈)类。在测试程序lab9—2.cpp中定义一个整型队列(或栈)对象,插入5个整数,压人队列(或栈),再依次取出并显示出来。 3.使用C++标准模板库(STL)中的双向队列类(deque)重新实现上一小题。 三、实验步骤 1.参照教材《C++语言程序设计》中链表类LinkeclI。ist的定义(教材中的例程9—6.h),给出其实现,注意合理使用NodIe类(教材中的例程9—3.h)的成员函数。在测试程序中定义整型链表A和B,分别插入5个元素,使用循环语句显示链表中的元素,然后把B中的元素加入A的尾部,再显示出来。 2.队列类的特点就是其元素的操作顺序为先入先出(FIFO),用上题中的链表类实现队列类,用链表类的成员函数实现队列的成员函数,在测试程序中定义一个整型队列对象,观察队列类中的元素先入先出的特点。 3.在程序中包含语句#include ,使用deque类的方法push_back()、empty()、pop_front()完成上一小题的要求。程序名:。、 四、实验程序 1、 #include "" int main()

JAVA实验报告-集合框架与泛型机制

Java 语言程序设计 C 实验报告 集合框架及泛型机制 学生姓名 专业、班级 指导教师 成绩 计算机与信息工程学院 年月日

一、实验目的 学习课程相关章节知识,通过上机练习,掌握以下知识: 1.掌握 List 接口下 ArrayList 及 LinkedList 的使用方法。 2.掌握 Map 接口下 HashMap 及 HashTable的使用方法 3.掌握集合中泛型的使用 二、实验内容 利用集合完成象数据库那样存储数据,并且可以简单查询,利用 map 存储学生信息,字段如下: id ,name,age,实现步骤: (1)创建类,类图如下: (2)在 main 方法编写逻辑代码 (3)运行程序并测试结果 package https://www.sodocs.net/doc/eb1824664.html,; public class Student { private String name ; private int age ; private String id ;

public String getName() { return name ; } public void setName(String name ) { this . name =name ; } public int getAge() { return age ; } public void setAge(int age ) { this. age=age ; } public String getId() { return id; } public void setId(String id) { this. id=id; } public Student(String name ,int age , String id ) { super(); this. name =name ; this. age=age ; this. id=id; } public void sayHi() { System.out.println("name=" +this.getName()+"age=" + this .getAge()+" " + "id=" + this.getId()); } }

6Java第六单元练习题-泛型与集合

6泛型与集合 6.1单项选择题 1.可实现有序对象的操作是?() A.HashMap B.HashSet C.TreeMap D.Stack 2.不是迭代器接口(Iterator)所定义的方法是()。 A.hasNext() B.next() C.remove() D.nextElement() 3.下面说法不正确的是() A.列表(List)、集合(Set)和映射(Map)都是java.util包中的接口。 B.List接口是可以包含重复元素的有序集合。 C.Set接口是不包含重复元素的集合。 D.Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。 4.下面那些方法不是接口Collection中已声明的方法() A.添加元素的add(Object obj) 方法 B.删除元素的remove(Object obj)方法 C.得到元素个数的length()方法 D.返回迭代器的iterator()方法,迭代器用于元素遍历 5. 下列关于容器的描述中,错误的是() A.容器是由若干个组建和容器组成的 B.容器是对图形界面中界面元素的一种管理 C.容器是一种对指定宽和高的矩形范围 D.容器都是可以独立的窗口 6. 下列界面元素中,不是容器的是() A.List B.JFrame C.JDialog D.Panel 7.应用程序的main方法中有以下语句,则输出的结果是( )。

Hashtable hashtable=new Hashtable(); hashtable.put("100","aaa"); hashtable.put("200","bbb"); hashtable.put("300","ccc"); System.out.println(hashtable.get("300").toString() + hashtable.get("200").toString() + hashtable.get("100").toString()); A) aaa B) bbb C) ccc D) cccbbbaaa 6.2判断题 1.Map接口是自Collection接口继承而来。(×) 2.集合Set是通过键-值对的方式来存储对象的。(×) 3.Integer i = (Integer.valueOf("926")).intValue();(√) 4.String s = (Double.valueOf("3.1415926")).toString(); (√) 5.Integer I = Integer.parseInt("926");(√) 6.Arrays类主要对数组进行操作。(√) 7.在集合中元素类型必须是相同的。(√) 8.集合中可以包含相同的对象。(×) 9.枚举接口定义了具有删除功能的方法。(×) 6.3程序阅读题 1.阅读下面的程序,回答问题。 import java.util.*; public class T { public static void main(String args[]) { Set set = new TreeSet(); set.add(new Integer(10)); set.add(new Integer(5)); set.add(new Integer(15)); set.add(new Integer(5)); set.add(new Integer(10)); System.out.println("size = " + set.size()); Iterator it=set.iterator(); while(it.hasNext()){ System.out.print(it.next()+" "); } }

实验11泛型与集合

实验内容: (1) 定义一个泛型类Instrument<E 〉,其中包括一个泛型方法void pla y(E x)。 定义两种乐器类:Cello、Violin 可以进行演奏。定义一个测试类进行测试. package ex111; public class Violin{ publicString toString() { System、out、println("violin、、、、、、、、、"); return ””; } } package ex111; public class Test_Main{ public staticvoid main(String[]args){ instrument〈Cello>model = new instrument〈Cello〉(); instrument

java泛型接口,泛型类泛型方法

泛型可提高代码的高扩展性和重用率. 1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。 2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。 3、泛型的类型参数可以有多个。 4、泛型的参数类型可以使用extends语句,例如。习惯上称为“有界类型”。 5、泛型的参数类型还可以是通配符类型。例如Class classType = Class.forName("https://www.sodocs.net/doc/eb1824664.html,ng.String"); 泛型可以用在接口,类方法,集合上面. 泛型接口: 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()); } 使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。 限制泛型的可用类型: 在上面的例子中,由于没有限制class GenericsFoo类型持有者T的范围,实际上这里的限定类型相当于Object,这和“Object泛型”实质是一样的。限制比如我们要限制T为集合接口类型。只需要这么做: class GenericsFoo,这样类中的泛型T 只能是Collection接口的实现类,传入非Collection接口编译会出错。 注意:这里的限定使用关键字extends,后面可以是类也可以是接口。但这里的extends已经不是继承的含义了,应该理解为T类型是实现Collection接口的类型,或者T是继承了XX类的类型。 下面继续对上面的例子改进,我只要实现了集合接口的类型: public class CollectionGenFoo { private T x; public CollectionGenFoo(T x) { this.x = x;

程序设计题库

实训三 21、声明double a; int b;哪些选项中的表达式能够正确的进行类型转换? A. a = b B. a = (decimal)b C. a = (int)b D. b = a 22、从下列选项中,选出变量result 的返回值是false 的表达式? A. bool result = (1 = 1) B. bool result = (4 == 5) C. bool result = (1 != 1) D. bool result = 0; 23、设置int a = 3。从以下选项中,选出所有变量result 的值为true 的表达式? A. bool result = !(a++ > 3) B. bool result = (++a > 3) C. bool result = (a++ >= 3) D. bool result = (~a == -4)

24、声明int32 a = 3,经过运算int32 b = a | 0xFFFFFFFF,变量 b 的最终值为? A. -1 B. 4294967295 C. 0 D. 无法编译通过 25、以下表达式中,哪些表达式的最终结果为-1? A. 2 << 1 | -5 B. 3 –6 / 3 C. (float) (-1 / 1) D. ~6 % 3 26、下列关于“||”运算符的描述中,哪些 是正确的? A. “||”运算符执行短路计算。 B. “||”运算符不是关键字。 C. “||”运算符是一种比较运算符。 D. 在使用“||”运算符的运算中,如果结果为真,则运算符左右两边的操作数都为真。

实验二 泛型异常处理 实验报告

实验二泛型异常处理实验报告 一、实验目的 1. 理解使用泛型、枚举的目的。 2. 掌握异常类、异常类的结构及自定义异常类的编程方法。 二、实验要求 1. 应用泛型编写简单的应用程序; 2. 自定义异常类的编写; 3. 异常类中try, catch, throw, throws 的编写方法。 三、实验内容 1. 阅读以下程序,写出运行结果。同时,把程序改写为使用泛型的程序。对比两个程序并说出泛型的优点。 public class GenericityDemo { public static void main(String[] args) { // 定义类Genericity的一个Integer版本 Genericity intobj = new Genericity(new Integer(88)); intobj.showType(); int i = (Integer) intobj.getobj(); System.out.println("value= " + i); System.out.println("----------------------------------"); // 定义类Genericity的一个String版本 Genericity strobj = new Genericity("Hello Genericity!"); strobj.showType(); String s = (String) strobj.getobj(); System.out.println("value= " + s); } } class Genericity { private Object obj; // 定义通用类型成员 public Genericity(Object obj) { this.obj = obj; } public Object getobj() { return obj;} public void setobj(Object obj) {this.obj = obj;} public void showType() { System.out.println("T实际类型是: " + obj.getClass().getName()); } }

程序设计课程大纲

《程序设计》课程大纲 一、课程简介 课程名称:程序设计学时/学分:80/5 先修课程:无 面向对象:ACM班新生 教学目标:本课程围绕着过程化和面向对象程序设计的思想、方法和应用三条主线,培养学生掌握程序设计的方法,使学生具有较强的应用计算机解决问题的能 力。 主要内容:以C++语言为教学语言,介绍结构化程序设计和面向对象程序设计的思想与方法,以及在C++中的具体实现。 二、教学内容 第一章绪论 主要内容:程序设计的背景知识介绍。包括计算机的软硬件、程序设计的过程。 重点与难点:什么是程序设计,如何学习程序设计。 第二章通过例子学习 主要内容:C++程序的基本结构及组成C++程序的基本元素。 重点与难点:变量、类型、算术表达式、赋值表达式。 第三章逻辑思维与分支程序设计 主要内容:关系表达式、逻辑表达式、if语句和switch语句。 重点与难点:正确使用分支语句,注意逻辑表达式的短路求值。 第四章重复控制与循环程序设计 主要内容:C++的循环语句及利用循环实现的算法。 重点与难点:三种循环结构,贪婪法和枚举法的应用。 第五章批量数据处理 主要内容:数组、字符串,批量数据的常用操作。 重点与难点:正确使用数组,常用的排序和查找算法。 第六章函数 主要内容:函数的定义与使用、递归、基于递归实现的算法。 重点与难点:多函数程序的执行过程、递归程序设计。 第七章间接访问 主要内容:指针的概念及使用、指针及引用传递、变量的动态分配。

重点与难点:指针传递 第八章数据封装 主要内容:结构体类型的定义与使用、单链表的概念及实现。 重点与难点:链接结构 第九章模块化开发 主要内容:结构化程序设计、模块划分、库的设计。 重点与难点:如何利用结构化程序设计的思想设计一个较大型的程序。 第十章创建新的工具 主要内容:面向对象的基本思想、类的定义、对象的定义与使用。 重点与难点:定义类的意义。 第十一章运算符重载 主要内容:为什么要有运算符重载以及C++运算符重载的实现方法。 重点与难点:几个特殊运算符的重载方法。 第十二章组合与继承 主要内容:组合、继承与运行时的多态性。 重点与难点:灵活应用组合与继承实现代码的重用,用多态性实现系统的维护与扩展。 第十三章泛型程序设计 主要内容:类模板的定义与使用。 重点与难点:类模板的应用场合及应用过程 第十四章输入输出与文件 主要内容:C++的输入输出过程、控制台输入输出、文件的输入输出。 重点与难点:C++输入输出实现的特点。 第十五章异常处理 主要内容:面向对象的异常处理的特点及C++异常处理的机制。 重点与难点:C++异常处理的过程 第十六章容器与迭代器 主要内容:容器与迭代器的概念及设计与实现。 重点与难点:本章是为数据结构的学习作准备。 三、教学进度安排

实验七:Java集合与泛型

实验七Java集合与泛型 一、实验目的 1)掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)掌握ArrayList的使用 5)掌握ArrayList与Vector的区别 6)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 7)掌握HashMap的使用 8)掌握HashMap与HashTable的区别 二、实验环境 JDK1.6+Eclpise3.2 三、实验准备 1)复习课件中理论知识 2)练习课堂所讲的例子 四、实验内容 1、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:“张三”、“李四”、“王五”、“马六”、“赵七”; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)首先打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 2、编写程序练习Map集合的基本使用: 1)创建一个只能值只能容纳String对象的person的HashMap集合; 2)往集合中添加5个“键-值”对象:id—>”1”、name—>”张三”、sex—>”男”、age—>”25”、love—>”爱学Java” 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)首先打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 五、验过程及结果 第1题调试结果如下图:

相关主题