文档库 最新最全的文档下载
当前位置:文档库 › 第三章 资料管理-集合泛型

第三章 资料管理-集合泛型

第三章  资料管理-集合泛型
第三章  资料管理-集合泛型

第三章资料管理-集合泛型

一、教学标准(讲授本知识点需要达到的深度,也是

学生学习本知识点需要达到的深度)

1.掌握技能点:

1)掌握集合的概念(熟练使用ArrayList、熟练使用HashTable)

2) 掌握泛型的概念、熟练使用.net中的两个泛型集合

3) 熟练使用DataGridView

2.熟悉业务需要:

1) 理解集合的实际用途

2) 泛型的实际需要

3) CRM客户关系管理系统中使用DataGridView显示数据

3.实现了CRM客户关系管理系统的主要功能

二、使用的讲授方法(打算采用什么方法讲授,以便

让学生想的透、记得牢、用的好,最好过目不忘)

先讲解集合,可以举个例子说明:盛水果的篮子,以引起学生的兴趣

再举出集合使用的问题,再讲解泛型集合

最后可以举出实际软件中的集合使用的案例:在没有使用数据库之前,我们的数据往往需要存储在一个特定的存储介质中,集合就是一个存储数据的好方法

三、详细讲授思路(描述本知识点讲授过程的整体安

排,主要讲构思)

1、料模块中主要有包含有以下模块:区域信息管理,客户资料管理,竞争对手管理三

个子模块,通过对客户相关资料的管理,实现了CRM客户关系管理系统的主要功能

2、需求分析(业务逻辑)

CRM客户关系管理系统开发的目标是实现企业管理的系统化,规范化和自动化,该系统模块:区域信息管理,客户资料管理,竞争对手管理等三个子功能,满足企业信息管理的需求。

在各模块的使用中,登录用户自定义搜索条件对数据库中的信息进行检索。同时可以添加新的客户信息。以及对存储的信息进行修改和删除操作。

在CRM系统中,对于客户资料信息的操作是必要的,管理用户登录后,可对企业资料信息实现添加,在添加时编号将自动生成,并且不修改,对于客户的信息要进行数据的正确性检查。

3、设计思路(实现思路)

用户登录后,可以实现对资料信息的添加,当单击添加按钮时,客户编号将自动生成,此时可以输入资料的详细信息,在输入信息时必须输入正确的信息,如客户名称、客户等级、客户来源、所属行业、客户类别、所在区域、联系电话、传真号码、邮政编码、联系地址、电子邮箱、备注等相关的信息,通过正则表达式对其验证,输入无误的情况下,单击保存按纽刚实现保存功能,因为我们尚未学习连接数据库的知识,所以我们采用使用集合泛型来存储数据,在集合泛型中添加的是object,所以我们对每一个窗体创建一个对应类,类中的属性和界面控一一对应,如frmClientManage窗体中客户名称、客户等级、客户来源、所属行业、客户类别、所在区域、联系电话、传真号码、邮政编码、联系地址、电子邮箱、备注等控件,新建一个ClientInfo类,并新建属性ClientId、ClientInfo、ClientType、ClientNote等属性相对应,当用户单击保存按纽时,将控件中的值保存到ClientInfo表中,最后将使用集合泛型的添加方法将ClientInfo的对象添加到集合泛型中,信息添加成功后,使用DataGridView控件绑定集合泛型,实现数据的显示。

4、需要用到的核心技术点

a)集合的使用。

b)泛型的使用。

c)DataGridView的显示与绑定数据。

d)常用的WinForm控件

e)SQL语言基础

f)https://www.wendangku.net/doc/4e18040140.html,

1)知识点1:泛型集合

泛型将类型参数的概念引入.NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数T,您可以编写其他客户端代码能够使用的单个类,而

●泛型最常见的用途是创建集合类。

●.NET Framework 类库在System.Collections.Generic 命名空间中包含几个新的泛型集

合类。应尽可能地使用这些类来代替普通的类,如System.Collections 命名空间中的ArrayList。

●您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。

●可以对泛型类进行约束以访问特定数据类型的方法。

●关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。

.net Framework中的泛型集合

在C# 2.0之前,主要可以通过两种方式实现集合:

●使用ArrayList

直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须进行繁琐的类型转换。

●使用自定义集合类

比较常见的做法是从CollectionBase抽象类继承一个自定义类,通过对IList对象进行封装实现强类型集合。这种方式要求为每种集合类型写一个相应的自定义类,工作量较大。泛型集合的出现较好的解决了上述问题,只需一行代码便能创建指定类型的集合。完成案例所需要的技术内容。

List

定义类型。下面看一个具体例子。

}

//年龄

public int Age

{

get { return _age; }

}

}

//创建Person对象

Person p1 = new Person("张三", 30);

Person p2 = new Person("李四", 20);

Person p3 = new Person("王五", 50);

//创建类型为Person的对象集合

List persons = new List();

//将Person对象放入集合

persons.Add(p1);

persons.Add(p2);

persons.Add(p3);

//输出第2个人的姓名

Console.Write(persons[1].Name);

可以看到,泛型集合大大简化了集合的实现代码,通过它,可以轻松创建指定类型的集合。非但如此,泛型集合还提供了更加强大的功能,下面看看其中的排序及搜索。

List排序:

排序基于比较,要排序,首先要比较。比如有两个数1、2,要对他们排序,首先就要比较这两个数,根据比较结果来排序。如果要比较的是对象,情况就要复杂一点,比如对Person对象进行比较,则既可以按姓名进行比较,也可以按年龄进行比较,这就需要确定比较规则。一个对象可以有多个比较规则,但只能有一个默认规则,默认规则放在定义该对象的类中。默认比较规则在CompareTo方法中定义,该方法属于IComparable泛型接口。请看下面的代码:

CompareTo方法的参数为要与之进行比较的另一个同类型对象,返回值为int类型,如果返回值大于0,表示第一个对象大于第二个对象,如果返回值小于0,表示第一个对象小于

第二个对象,如果返回0,则两个对象相等。

则,可以在Compare方法中定义,该方法属于IComparer泛型接口,请看下面的代码:

Compare方法的参数为要进行比较的两个同类型对象,返回值为int类型,返回值处理规则与CompareTo方法相同。其中的Comparer.Default返回一个内置的Comparer对象,用于比较两个同类型对象。

Dictionary:

Dictionary<(Of <(TKey, TValue>)>) 包含键/值对集合。它的Add 方法采用两个参数,一个用于键,另一个用于值。若要初始化Dictionary<(Of <(TKey, TValue>)>) 或其Add 方法采用多个参数的任何集合,请将每组参数括在大括号中,如下面的(学生简单信息管理)示例所示:

请注意每个对象初始值设定项中的三对大括号。最内层的大括号括起了Scores 列表的对象初始值设定项。下一组大括号括起了Student 的初始值设定项,而最外层的大括号括起了将要添加到students Dictionary<(Of <(TKey, TValue>)>) 中的键/值对的初始值设定项。最后,整个集合初始值设定项被括在一对大括号内。

2)知识点3:DataGridView

DataGridView 控件提供用来显示数据的可自定义表。使用DataGridView 类,可以通过使用DefaultCellStyle、ColumnHeadersDefaultCellStyle、CellBorderStyle 和GridColor 等属性对单元格、行、列和边框进行自定义。

下面的代码示例演示如何初始化一个未绑定的DataGridView。

private void ledgerStyleButton_Click(object sender, System.EventArgs e)

{

// Create a new cell style.

DataGridViewCellStyle style = new DataGridViewCellStyle();

{

style.BackColor = Color.Beige;

style.ForeColor = Color.Brown;

style.Font = new Font("Verdana", 8);

}

// Apply the style as the default cell style.

dataGridView1.AlternatingRowsDefaultCellStyle = style;

ledgerStyleButton.Enabled = false;

}

private void SetUpDataGridView()

{

this.Controls.Add(dataGridView1);

dataGridView1.ColumnCount = 5;

DataGridViewCellStyle style =

dataGridView1.ColumnHeadersDefaultCellStyle;

style.BackColor = Color.Navy;

style.ForeColor = Color.White;

style.Font = new Font(dataGridView1.Font, FontStyle.Bold);

dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;

https://www.wendangku.net/doc/4e18040140.html, = "dataGridView1";

dataGridView1.Location = new Point(8, 8);

dataGridView1.Size = new Size(500, 300);

dataGridView1.AutoSizeRowsMode =

DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;

dataGridView1.ColumnHeadersBorderStyle =

DataGridViewHeaderBorderStyle.Raised;

dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single;

dataGridView1.GridColor = SystemColors.ActiveBorder;

dataGridView1.RowHeadersVisible = false;

dataGridView1.Columns[0].Name = "Release Date";

dataGridView1.Columns[1].Name = "Track";

dataGridView1.Columns[1].DefaultCellStyle.Alignment =

DataGridViewContentAlignment.MiddleCenter;

dataGridView1.Columns[2].Name = "Title";

dataGridView1.Columns[3].Name = "Artist";

dataGridView1.Columns[4].Name = "Album";

// Make the font italic for row four.

dataGridView1.Columns[4].DefaultCellStyle.Font = new Font(DataGridView.Defa ultFont, FontStyle.Italic);

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

dataGridView1.MultiSelect = false;

dataGridView1.BackgroundColor = Color.Honeydew;

dataGridView1.Dock = DockStyle.Fill;

dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler (dataGridView1_CellFormatting);

dataGridView1.CellParsing += new DataGridViewCellParsingEventHandler(dataGr idView1_CellParsing);

addNewRowButton.Click += new EventHandler(addNewRowButton_Click);

deleteRowButton.Click += new EventHandler(deleteRowButton_Click);

ledgerStyleButton.Click += new EventHandler(ledgerStyleButton_Click);

dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler (dataGridView1_CellValidating);

}

private void PopulateDataGridView()

{

// Create the string array for each row of data.

string[] row0 = { "11/22/1968", "29", "Revolution 9", "Beatles", "The Beatl es [White Album]" };

string[] row1 = { "4/4/1960", "6", "Fools Rush In", "Frank Sinatra", "Nice 'N' Easy" };

string[] row2 = { "11/11/1971", "1", "One of These Days", "Pink Floyd", "Me ddle" };

string[] row3 = { "4/4/1988", "7", "Where Is My Mind?", "Pixies", "Surfer R osa" };

string[] row4 = { "5/1981", "9", "Can't Find My Mind", "Cramps", "Psychedel ic Jungle" };

string[] row5 = { "6/10/2003", "13", "Scatterbrain. (As Dead As Leaves.)", "Radiohead", "Hail to the Thief" };

string[] row6 = { "6/30/1992", "3", "Dress", "P J Harvey", "Dry" };

// Add a row for each string array.

{

DataGridViewRowCollection rows = this.dataGridView1.Rows;

rows.Add(row0);

rows.Add(row1);

rows.Add(row2);

rows.Add(row3);

rows.Add(row4);

rows.Add(row5);

rows.Add(row6);

}

// Change the order the columns are displayed.

{

DataGridViewColumnCollection columns = this.dataGridView1.Columns;

columns[0].DisplayIndex = 3;

columns[1].DisplayIndex = 4;

columns[2].DisplayIndex = 0;

columns[3].DisplayIndex = 1;

columns[4].DisplayIndex = 2;

}

}

四、教学中要注意的关键点(老师讲授中特别要强调、

要讲透的点,学生学习中特别要关注、要想透的点)

1.理解集合的概念,通过集合,如何方便的简化开发难度

2.理解泛型的概念,及其在项目中的作用

3.DataGridView 数据的显示与格式控制

五、所需使用的案例或道具

需要使用VS工具做WinForm的开发系统,课中可以选用CRM公共关系系统中的主要功能做演示

六、准备的提问问题

1、什么是集合?

2、有那些常见的集合?

3、为什么需要泛型?

4、有那些泛型集合?

5、泛型集合的用途?举个例子说明?

七、作业

1、集合保存数据的特点?

static void Main(string[] args)

{

// Create and initialize a new Hashtable.

Hashtable table = new Hashtable();

//Student Name, Grade

table.Add("leiwanjun", 100);

table.Add("wanghuan", 87);

table.Add("wuhailong", 92);

table.Add("renyao", 76);

table.Add("tanghonglei", 84);

table.Add("chenxiaoping", 91);

table.Add("liupeixun", 80);

table.Add("huyoumou", 87);

// Display the properties and values of the Hashtable. Console.WriteLine("Count: {0}", table.Count);

PrintTable(table);

Console.WriteLine();

int g = (int) table["wuhailong"];

Console.WriteLine ("wuhailong's grade is: {0}", g);

Console.WriteLine();

PrintItems ("All Names", table.Keys);

Console.WriteLine();

PrintItems ("All Grades", table.Values);

}

public static void PrintTable( Hashtable myList)

{

Console.WriteLine ("{0, -15} {1, -15}", "Name","Grade");

Console.WriteLine ("{0, -15} {1, -15}", "----","-----");

// // 排序

// ArrayList al = new ArrayList(myList.Keys);

// al.Sort();

// foreach (string Name in al)

// {

// Console.WriteLine("{0, -15} {1, -15}", Name, myList[Name]); // }

// //

//遍历哈希表中的每个元素,直接输出

foreach (DictionaryEntry e in myList)

{

Console.WriteLine ("{0, -15} {1, -15}", e.Key, e.Value);

}

}

public static void PrintItems(string title, IEnumerable myList ) {

Console.Write ("{0}: ", title);

3、定义多个学生信息,使用集合来保存这些学生的信息

八、测试题

1、简述集合的作用?

2、泛型集合的用法?

3、使用泛型集合实现学生信息和老师信息的管理?

实验十 泛型与集合框架

实验十泛型与集合框架 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——内容功能完善,编程风格良好,人机接口界面良好;

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

《集合框架及泛型》作业 一、根据课上讲解内容,完成演示示例和课堂练习 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实验报告-集合框架与泛型机制

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

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

实验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;

实验11泛型与集合

实验内容: (1)定义一个泛型类In strume nt,其中包括一个泛型方法void play(E x) 定义两种乐器类:Cello、Violin可以进行演奏。定义一个测试类进行测试。 package ex111; public class Violin { public String toStri ng() { System.out.println("violin ....... "); return ""; } } package ex111; public class Test_Ma in { public static void main( Stri ng[] args) { instrumentmodel = 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++) {

实验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实验报告-集合框架及泛型机制

Java语言程序设计C 实验报告 集合框架及泛型机制 学生姓名 专业、班级 指导教师 成绩 计算机与信息工程学院 年月日 一、实验目的 学习课程相关章节知识,通过上机练习,掌握以下知识:

1.掌握List接口下ArrayList及LinkedList的使用方法。 2.掌握Map接口下HashMap 及HashTable的使用方法 3.掌握集合中泛型的使用 二、实验内容 利用集合完成象数据库那样存储数据,并且可以简单查询,利用map存储学生信息,字段如下: id ,name,age,实现步骤: (1)创建类,类图如下: (2)在main方法编写逻辑代码 (3)运行程序并测试结果 package com、cn; 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()); } } //Databace类 package com、cn; import java、util、Collection; import java、util、HashMap; import java、util、Iterator; public class Databace { private Student a; public Databace() { super(); map=new HashMap(); } public Student getA() { return a; }

实验七: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题调试结果如下图:

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()+" "); } }

实验6 泛型与集合框架_附答案

任务一:用LinkedList存放对象 1.利用面向对象的思想,创建以下类: ●Person类,包含Person的姓名和身份证号码,覆盖Object类的toString() 方法,显示“姓名:XXX 身份证号:XXX”。 ●Student类,继承Person类,包含学生的语文、数学、英文课的成绩,并覆盖 父类的toString()方法,显示“姓名:XXX 身份证号:XXX 语文:XXX 数学:XXX 英文:XXX”。 ●Teacher类,继承Person类,包含教师的工资。并覆盖父类的toString()方 法,显示“姓名:XXX 身份证号:XXX 工资:XXX”。 ●public class Person implements Comparable{ ●String name; ●String ID; ●Person(String s,String i){ ●name=s; ●ID=i; } ●public String toString() { ●String str="姓名:"+name+" 身份证号码:"+ID; ●return str; } ●public int compareTo(Object arg0) { ●Person p=(Person)arg0; ●return https://www.wendangku.net/doc/4e18040140.html,pareTo(p.ID); } } ●class Student extends Person { ●int Chinese; ●int Math; ●int English; ●Student(String n,String i,int c,int m,int e){ ●super(n,i); ●Chinese=c; ●Math=m; ●English=e; } ●public String toString() { ●String str; ●str=" 语文成绩:"+Chinese+" 数学成绩:"+Math+" 英语成绩: "+English; ●return super.toString()+str; ●} ●} ●class Teacher extends Person{ ●int salary; ●Teacher(String n,String i,int s){ ●super(n,i); ●salary=s; ●}

学号姓名--集合框架与泛型实验报告

浙江大学城市学院实验报告 课程名称面向对象程序设计 实验项目名称集合框架与泛型 学生姓名专业班级学号 一. 实验目的和要求 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集合框架的接口组成以及它们的继承关系,并针对每个接口给出具体的实现类。 答: 2. 分析泛型类、泛型接口、泛型方法的特点 请查阅书籍和Java帮助文档,举例说明泛型类、泛型接口、泛型方法的特点。 答: 3. 编程实现:设计学生管理类StudentManager(用List集合管理学生对象)。 StudentManager类的功能包括添加学生、查询学生、删除学生、统计学生成绩等。需要设计表示学生对象的Student类,并用LinkedList或ArrayList集合来管理可被数量的学生对象。另外还需要设计测试类Test来验证StudentManager的功能。 4. 编程实现:设计学生管理类StudentManager(用Set集合管理学生对象)。具体功能 要求同第3题,但是需要用Set的实现类(比如HashSet、TreeSet)管理学生对象。

实验五 集合类与泛型

实验五集合类与泛型 1.实验目的 (1)掌握ArrayList类与LinkedList类的用法; (2)掌握TreeSet类的用法; (3)掌握Map接口及其实现类的用法 (4)掌握泛型的用法。 2.实验内容 实验题1 有四个类,主类Store在包https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子类, Product类实现Comparable接口,重写了Comparable接口中方法compareTo,实现了product对象按照价格排序。 基本要求: (1)在主类Store中实例化多个Mobile类与Mp3Player的实例,分别将这些实例用ArrayList与LinkedList存放,最后用StringBuiler存放并将其输出。 (2)用迭代器(iterator)将实例对象输出(要求用加强型for循环)。 Store类 package https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p44; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.swing.JOptionPane;

import https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4.data.Mobile; import https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4.data.Mp3Player; import https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4.data.Product; public class Store { public static int count=0; public static void main(String[] args) { Mobile m1=new Mobile("E365 on china Mobile",1780); Mobile m2=new Mobile("E3330 on china Mobile",1450); Mp3Player mp1=new Mp3Player("Meiz0 X3 (256MB)",399); Mp3Player mp2=new Mp3Player("Meiz0 E5 (512MB)",580); Mp3Player mp3=new Mp3Player("Xlive XM Mp3Player(256MB)",930); Product p[]={mp2,mp1,mp3,m1,m2}; Arrays.sort(p); StringBuilder text=new StringBuilder(); for(Product i:p){ text.append(i).append("\n"); } System.out.println("用StringBuiler输出:\n"+text); List list1=new ArrayList();//用到泛型因为Product是mp3和mobil的总类,ArrayList只能放一种类型 List list2=new LinkedList(); for(int i=0;i

集合及泛型自测题

选择题 1.在java中,( C )对象可以使用键/值的形式保存数据。 A:ArrayList B: HashSet C: HashMap D: LinkedList 2.创建一个类,来存储唯一的对象元素,元素不需要保持特定顺序,但是必须唯一。最 能满足这种要求的接口是:( AE ) 。(多选) A、Set B、List C、Map D、Array E、HashSet 3.以下不属于ArrayList的方法的是(C ) A: add() B: addAll() C: addFirst() D: size(); 4.下列声明语句错误的是(C ) A : List list=new ArrayList() B: List list=new LinkedList(); C: ArrayList al= new List(); D: Set set=(Set)new ArrayList() 5.欲构造ArrayList 类的一个实例,此类继承了List 接口,下列哪个方法是正确的(B )。 A: ArrayList myList=new Object( ) B: List myList=new ArrayList( ) C: ArrayList myList=new List( ) D: List myList=new List( ) 填空题 6.Iterator通过调用hasNext() 判断是否有下一元素,并通过next() 方法取得 下一元素。 判断题 7.ArrayList 和LinkedList 都实现Cloneable 接口,都提供了两个构造函数,一个无参 的,一个接受另一个Collection。(√) 8.Map接口不是Collection接口的继承(√)

集合实验

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.实验目的 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——内容功能完善,编程风格良好,人机接口界面良好; 3.C——完成必做内容;

java集合框架(习题与答案)资料

java 集合框架(习题) 集合框架 Key Point * Collection 接口、Set 接口、List 接口基本操作 * List 接口及其实现类 * Set 接口及其实现类 * 迭代遍历 * Hash 算法与hashCode 方法 * Comparable 接口 * Map 接口及其实现类 * 遍历Map * 泛型 练习 1. 填空 Collection 接口的特点是元素是对象; List 接口的特点是元素有(有|无)顺序,可以(可以|不可以)重复; Set 接口的特点是元素无(有|无)顺序,不可以(可以|不可以)重复;Map 接口的特点是元素是键值对,其中值可以重复,键不可以重复。 2. (List)有如下代码 import java.util.*; public class TestList{ public static void main(String args[]){ List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(1, “Learn”); list.add(1, “Java”); printList(list); } public static void printList(List list){ for(Object obj:list){ String str=(String)obj; System.out.println(obj); } } } 要求: 1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容 2) 写出程序执行的结果Hello java Learn World 3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪里?ArrayList 和LinkedList 使用上有什么区别?实现上有什么区别?

java 集合与泛型

Collection 接口及实现类 Java 语言的Collection 接口及实现类是在java.util 包中定义的,其中定义了多个接口和类,它们统称为Java 集合框架(Java Collection Framework )。 Java 集合框架由两种类型构成,一个是Collection ,另一个是Map 。Collection 对象用于存放一组对象,Map 对象用于存放一组关键字/值的对象。Collection 和Map 是最基本的接口,它们又有子接口,这些接口的层次关系如图1所示。 图1 Java 集合框架的接口继承关系 1.1 Collection 接口及操作 Collection 接口是所有集合类型的根接口,它有三个子接口:Set 接口、List 接口和Queue 接口。 Collection 接口的定义如下: public interface Collection extends Iterable { // 基本操作 int size(); boolean isEmpty(); boolean contains(Object element); boolean add(E element); boolean remove(Object element); Iterator iterator(); // 批量操作 boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); // 数组操作 Object[] toArray(); T[] toArray(T[] a); } 说明 从JDK 1.5开始,Java 开始支持范型(generics )的概念。在Collection 接口 的声明中,就表示该接口支持范型,它指的是集合中的对象类型。这样,当我们声明一个Collection 实例时,应该使用这种方式指明包含在集合中的对象类型。这可以使编译器在编译时检查存入集合的对象类型是否正确,从而减少运行时错误。 Collection 接口中定义的方法主要包括三类:集合操作、批量操作和数组操作。

实验报告_实验7 泛型与集合(学生学号_姓名)

实验报告_实验7 泛型与集合(学生学号_姓 名) 一、实验目的 1.理解泛型的概念及泛型的简单使用 2.掌握集合接口及其实现类的概念; Set接口:HashSet、TreeSet、 List接口:ArrayList、LinkedList、Vector Map接口:HashMap、TreeMap、Hashtable 3.掌握集合元素的遍历方法; 4.熟悉Java中的装箱、拆箱操作。 二、实验步骤 3、(基础题)填充VectorTest.java程序所缺代码,编译并运行程序; 程序所缺代码: Vector vec = new _____①___Vector__(); vec. ②add(number); for(int i = 0; i < vec.____③size()_____; i++){ System.out.println(vec.____④_get___(i)); 4、(基础题)阅读并运行下面代码,比较Set接口、List接口、Map接口的异同点,并回答问题,: 问题:如何为程序中的集合指定类型? Set hs = new HashSet<>(); ArrayList al = new ArrayList< String> (); Map hm = new HashMap (); 5、(基础题)下面程序所实现的功能是:Hashtable,LinkedList写入或读取时间的比较: 程序所缺代码: import _____①__java.util.*____;

for(int i = 0; i < 100000; i++) { table. put②(""+i, new Integer(i)); } for(int i = 0; i < 100000; i++){ table. ___get_③_____ (""+i); } for(int i = 0; i < 100000; i++){ list. ___add_④____ (new Integer(i)); } callTime = ____System.currentTimeMillis();___⑤_______ for(int i = 0; i < 100000; i++){ list.____get_⑥______(i); } 问题: 在读取数据时, Hashtable与LinkedList相比,哪个效率更高? Hashtable 6、(基础题)本程序的功能是:获取系统的系统属性值并输出,请参考课件,填充所缺少代码,并运行程序: 程序所缺代码: Properties systemProperties = System. _____①getProperties ______ (); Enumeration enum1 = systemProperties. ②propertyNames(); while(enum1. ____③__ hasMoreElements ___ ()){ String key = (String)enum1.nextElement(); String pro = systemProperties. ____④_ getProperty ___ (key); System.out.println(key + "=" + pro); } } }

实验05 集合类与泛型

实验五集合类与泛型 1.实验内容 实验题1 有四个类,主类Store在包https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子类, Product类实现Comparable接口,重写了Comparable接口中方法compareTo,实现了product对象按照价格排序。 基本要求: (1)在主类Store中实例化多个Mobile类与Mp3Player的实例,分别将这些实例用ArrayList与LinkedList存放,最后用StringBuiler存放并将其输出。 (2)用迭代器(iterator)将实例对象输出(要求用加强型for循环)。 package https://www.wendangku.net/doc/4e18040140.html,.nwsuaf.jp.p4.data; import java.io.Serializable; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public abstract class Product implements Comparable , Serializable{ public static int i; protected String name; protected double price; protected String saledate; protected String sales; public String getSaledate() { return saledate; } public String getSales() { return sales; } public void sell(String saledate, double sales) {

相关文档