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

合集下载

JAVA集合框架与泛型

JAVA集合框架与泛型

集合框架1,集合概述为了保存数量不确定的数据,以及保存具有映射关系的数据,Java提供了集合类,集合类主要保存、盛装其它数据(集合里只能保存对象,实际上保存的是对象的引用变量),因此集合类也被称为容器类。

Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类,所有的集合类都位于java.util包下。

下图是部分集合框架的梗概:2,CollectionCollection接口是List、Set和Queue接口的父接口,该接口里定义了List、Set和Queue 的共性方法,必须要掌握。

2.1,boolean add(Object o):用于向集合中添加元素,如果集合对象被添加操作改变了,则返回true。

2.2,boolean addAll(Collection c):将集合c里的所有元素添加到指定的集合里,如果集合被添加操作改变了,返回true。

2.3,void clear():清除集合里的所有元素。

2.4,bolean contains(Object o):返回集合里是否包含指定元素。

2.5,boolean containsAll(Collection c):返回集合里是否含集合c里的所有元素。

2.6,boolean isEmpty():返回集合是否为空。

当集合长度为0时,返回true;否则返回false。

2.7,Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。

2.8,boolean remove(Object o):删除集合中指定元素o,当集合中包含了一个或多个元素o 时,全部删除,返回true。

2.9,boolean removeAll(Collection c):从该集合中删除集合c里包含的元素,删除一个或一个以上元素,返回true。

2.10,boolean retainAll(Collection c):从该集合中删除集合c里不包含的元素,取交集,操作改变了该集合,返回true。

实验十 泛型与集合框架

实验十 泛型与集合框架

实验十泛型与集合框架1.实验目的1、掌握LinkedList<E>类和Collections类提供的用于排序和查找链表中的数据的方法2、掌握用散列映射来存储数据3、掌握TreeSet<E>类的使用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——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。

java集合的使用实验总结 -回复

java集合的使用实验总结 -回复

java集合的使用实验总结-回复问题并进行总结。

1. 什么是Java集合?Java集合是Java编程语言中提供的一组数据结构和算法的实现,用于存储和操作数据。

它提供了一种灵活的方式来组织、访问和操作数据,使我们能够更方便地进行数据处理和操作。

2. Java集合框架的组成及特点是什么?Java集合框架包括以下几个主要的接口和类:Collection接口、List接口、Set接口、Map接口等。

- Collection接口是List和Set接口的父接口,用于存储和处理一组对象。

- List接口是一个有序的集合,允许重复的元素。

- Set接口是一个不允许重复元素的集合。

- Map接口是一种键值对的映射类,不允许重复的键,但允许重复的值。

Java集合框架的特点包括:- 可变长度:集合类的长度是可以动态变化的,可以根据需要增加或删除元素。

- 泛型支持:集合类支持泛型,可以指定存储的元素类型。

- 高效性能:Java集合框架的实现具有高效性能,能够快速地进行数据操作和处理。

- 线程安全性:集合类不是线程安全的,可以使用并发集合类来实现多线程安全访问。

3. Java集合框架的常用类有哪些?Java集合框架提供了许多常用的类,包括:- ArrayList:是List接口的可变长数组实现,支持随机访问,适用于频繁访问元素的场景。

- LinkedList:是List接口的双向链表实现,支持高效地插入和删除操作,适用于频繁插入和删除元素的场景。

- HashSet:是Set接口的哈希表实现,不允许重复元素,适用于需要快速访问和删除元素的场景。

- TreeSet:是Set接口的有序集合实现,基于红黑树实现,可以按照自然顺序或自定义顺序来访问和迭代元素。

- HashMap:是Map接口的哈希表实现,基于哈希算法来存储和检索键值对。

- TreeMap:是Map接口的有序映射实现,基于红黑树结构,可以按照键的自然顺序或自定义顺序来访问和迭代键值对。

java实验6泛型与集合框架

java实验6泛型与集合框架

java实验6泛型与集合框架
实验6 泛型与集合框架
一、实验目的
(1)掌握泛型与集合框架。

二、实验环境
JDK1.6+Eclpise3.2
三、实验内容
1、建立一个线性表,依次向线性表中输入数据元素1,2,3,……10,然后删除数据元素5,
最后依次显示当前线性表中的数据元素。

2、建立一个线性表,依次向线性表中插入15个数据元素,每个元素都是两位的随机整数,
然后设计算法编写程序使线性表左端的元素都是偶数,右边的元素都是奇数,最后依次显示当前线性表中的数据元素。

3、建立一个线性表,依次向线性表中插入6个数据元素,每个元素都是两位的随机整数,
依次显示当前线性表中的数据元素,然后使线性表置逆,再依次显示当前线性表中的数据元素。

4、使用堆栈结构编写十进制整数到R(2、8、16)进制整数的数制转换程序。

5、编写一个程序,将链表中的学生英语成绩单存放到一个树集中,使得按成绩自动排序,
并输出排序结果。

6、有10个U盘,有两个重要的属性:价格和容量。

编写一个应用程序,使用TreeMap
类,分别按照价格和容量排序输出10个U盘的详细信息。

7、题目要求:对于给定的一个字符串的集合,格式如:
{aaa bbb ccc},{bbb ddd},{eee fff},{ggg},{ddd hhh}
要求将其中交集不为空的集合合并,要求合并完成后的集合之间
无交集,例如上例应输出:
{aaa bbb ccc ddd hhh},{eee fff},{ggg}
四、实验结果
五、实验总结:。

java实验报告——异常、集合类和泛型

java实验报告——异常、集合类和泛型
Stu[12]=new XueShengXinXi(" 电 信 ", " 电 信 10-2", " 李 雨 ", " 女 ", "6314", "43ghffvvdfnhjbh");
for(int x=13;x<Stu.length;x++) {
Stu[x]-generated method stub //XueShengXinXi[] Stu=ChuShiHua(); //初始化系统数据 XueShengXinXi[] Stu=new XueShengXinXi[100]; Stu[0]=new XueShengXinXi("专业", "班级", "姓名", "性别", "电话", "家庭住址 "); Stu[1]=new XueShengXinXi(" 自 动 化 ", " 自 动 化 10-1", " 张 三 ", " 男 ", "63256", "fnhjfdhsdbh"); Stu[2]=new XueShengXinXi("自动化", "自动化10-2", "李四", "女", "653256", "nfhggdfddhsdbh"); Stu[3]=new XueShengXinXi(" 电 子 ", " 电 子 10-1", " 王 五 ", " 男 ", "6156", "fnhvjbh");

Java程序设计 项目5Java泛型与集合框架

Java程序设计  项目5Java泛型与集合框架

任务1 泛型
例5.3 泛型接口的应用。
public class MyClassTest{ public static void main(String args[]){ Integer inums[] = {56,47,23,45,85,12,55}; Character chs[] = {'x','w','z','y','b','o','p'}; MyClass<Integer> iob = new MyClass<Integer>(inums); MyClass<Character> cob = new MyClass<Character>(chs); System.out.println("Max value in inums: "+iob.max()); System.out.println("Min value in inums: "+iob.min()); System.out.println("Max value in chs: "+cob.max()); System.out.println("Min value in chs: "+cob.min()); } } 出现运行结果为: Max value in inums: 85 Min value in inums: 12 Max value in chs: z Min value in chs: b
任务1 泛型
接下来我们定义一个类MyClass来实现这个接口,代码如下:
class MyClass<T extends Comparable<T>> implements MinMax<T>{ T[] vals; MyClass(T[] ob){ vals = ob; } public T min(){ T val = vals[0]; for(int i=1; i<vals.length; ++i) if(vals[i].compareTo(val)<0)val=vals[i]; return val; } public T max(){ T val = vals[0]; for(int i=1;i<vals.length;++i) if (vals[i].compareTo(val)>0)val=vals[i]; return val; } }

实验十 泛型与集合框架

实验十 泛型与集合框架

实验十泛型与集合框架1.实验目的1、掌握LinkedList<E>类和Collections类提供的用于排序和查找链表中的数据的方法2、掌握用散列映射来存储数据3、掌握TreeSet<E>类的使用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——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。

Java集合框架实验报告

Java集合框架实验报告

浙江大学城市学院实验报告课程名称 Java高级程序设计实验项目名称 Java集合框架实验学生姓名专业班级学号一、实验目的1.理解Java集合框架的特点、接口与类之间的关系2.掌握Java集合框架的List接口,以及List接口的重要实现类LinkedList、ArrayList3.掌握Java集合框架的Set、SortedSet接口,以及重要实现类HashSet与TreeSet4.掌握Java集合框架的Map、SortedMap接口及其重要实现类HashMap、TreeMap5.掌握Java集合框架的Collection与Iterator接口的特点与使用方式二、实验内容1、使用List管理对象集合2、使用Map管理对象集合3、使用Set管理对象集合4、设计一个自定义的集合类三、实验步骤1、在Eclipse中新建工程(即项目)2、使用List管理对象集合1)新建一个包listExample2)在这个包中新建三个类:Student类,StudentList类,StudentListTest类。

参考代码: Student.java, StudentList.java,StudentListTest.java3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。

void addStudent(Student student){//添加一个学生对象boolean a=true;for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getId().equalsIgnoreCase(student.getId()))a=false;}if(a==true)students.add(student);//修改代码,保证students集合中所有学生对象的id 号唯一}void deleteStudentById(String id){//根据学号删除学生对象for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getId().equalsIgnoreCase(id))students.remove(stud);}}void deleteStudentByName(String name){//根据姓名删除学生对象for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getName().equalsIgnoreCase(name))students.remove(stud);}}void deleteStudentByAge(int age){//根据年龄删除学生对象for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getAge()==age)students.remove(stud);}}Student[] findByName(String name){int a=0;for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getName().equalsIgnoreCase(name))a++;}Student[] st=new Student[a];int b=0;for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getName().equalsIgnoreCase(name)){st[b]=stud;b++;}}return st;}Student[] findByAge(int age){int a=0;for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getAge()==age)a++;}Student[] st=new Student[a];int b=0;for(int i=0;i<students.size();i++){Student stud = (Student)students.get(i);if(stud.getAge()==age){st[b]=stud;b++;}}return st;}4)新创建listExample2包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的List、ArrayList或LinkedList都使用泛型。

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

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

实验报告_实验7 泛型与集合(学生学号_姓名)一、实验目的1.理解泛型的概念及泛型的简单使用2.掌握集合接口及其实现类的概念;Set接口:HashSet、TreeSet、List接口:ArrayList、LinkedList、VectorMap接口:HashMap、TreeMap、Hashtable3.掌握集合元素的遍历方法;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<String> hs = new HashSet<>();ArrayList<String> al = new ArrayList< String> ();Map<Integer,String> hm = new HashMap<Integer,String> ();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相比,哪个效率更高?Hashtable6、(基础题)本程序的功能是:获取系统的系统属性值并输出,请参考课件,填充所缺少代码,并运行程序:程序所缺代码: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);}}}。

JAVA实验报告材料-集合框架及泛型机制

JAVA实验报告材料-集合框架及泛型机制

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

2.掌握Map 接口下HashMap 及HashTable 的使用方法3.掌握集合中泛型的使用二、实验内容利用集合完成象数据库那样存储数据,并且可以简单查询,利用map 存储学生信息,字段如下:id ,name,age ,实现步骤:(1)创建类,类图如下:2)在main 方法编写逻辑代码3)运行程序并测试结果package ;public class Student {private String name ;private int age ;private String id ;public String getName() {return namepublic 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 ;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;public class Databace {private Student a;public Databace() {super ();map = new HashMap<String,Student>();}public Student getA() {return a;}public void setA(Student a) {this .a = a;}HashMap<String,Student> map ;public void delete(){ID" );System. out .println( " 请输入要删除表中元素String id =Test. sc.next();if (map .containsKey( id)){map .remove( id);Collection<Student> c= map .values();IteratorvStude nt> it= c.iterator();while (it .hasNext()){a= it .n ext();a.sayHi();}}else{System. out .println("表中没有该元素");}}public void in sert(){System. out .println("按顺序输入id、age、name");String name =Test. sc.next();int age =Test. sc.n ext In t();String id =Test. sc.next();a= new Student( name ,age ,id );map .put( id , a);System. out .println("成功的插入一条记录”);public void update(){System. out .println("请输入要修改表中元素ID");String id =Test. sc.next();if (map .containsKey( id)){map .remove( id);System. out .println("按顺序输入name,age,id");id =Test. sc.next();String name =Test. sc.next();int age =Test. sc.nextInt();a= new Student( id ,age ,name );map .put( id , a);}else{System. out .println("表中没有该元素");}}public void select()System. out .println("请输入要查询的方式 1.查询单行 2.查询全部"); int i=Test. sc.nextInt();switch (i){case 1:{System. out .println("请输入要查询表中元素ID");String id =Test. sc.next();{a= map .get( id);a.sayHi();}else{System. out .println("表中没有该元素");}}break ;case 2:{Collection<Student> c=map .values();Iterator<Student> it= c.iterator();while (it .hasNext()){a= it .next();a.sayHi();}}break ;}}}//testpackage ;import java.util.*;public class Test {/*** @param args */public static Scanner sc= new Scanner(System. public static void main(String[] args ){// TODO Auto-generated method stuint i=0;Databace d = new Databace();while (i==0){int j=Test. sc.nextInt(); switch (j){case 1:d .insert(); breakcase 2: d .select(); breakcase 3: in);System. out .println( System. out .println( System. out .println( System. out .println( System. out .println( "1.储存学生信息") "2.查询学生信息") "3.修改学生信息") "4.删除学生信息") "退出");d .update(); breakcase 4:d .delete(); break default :i=1;}}}}提示:用id 做map 集合的键部分,用student 对象做map 集合的值部分效果显示:三、实验思想四、实验结果五、实验心得。

集合框架编程实验报告

集合框架编程实验报告

一、实验目的1. 理解Java集合框架的基本概念和结构。

2. 掌握常用集合类(如ArrayList、LinkedList、HashSet、HashMap等)的使用方法。

3. 熟悉集合框架中的迭代器、比较器、集合工具类等高级特性。

4. 通过实际编程练习,提高对集合框架的运用能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 创建一个包含整数的ArrayList集合,并添加、删除、查找元素。

2. 使用LinkedList实现一个简单的栈和队列。

3. 创建一个包含字符串的HashSet集合,并实现元素的唯一性。

4. 创建一个HashMap集合,存储学生信息(学号作为键,姓名作为值)。

5. 使用迭代器遍历集合元素。

6. 实现自定义比较器,对集合元素进行排序。

7. 使用集合工具类对集合进行操作。

四、实验步骤及代码实现1. 创建一个包含整数的ArrayList集合,并添加、删除、查找元素。

```javaimport java.util.ArrayList;import java.util.List;public class ArrayListTest {public static void main(String[] args) {List<Integer> list = new ArrayList<>();// 添加元素list.add(1);list.add(2);list.add(3);// 删除元素list.remove(1);// 查找元素int index = list.indexOf(2);System.out.println("元素2的索引:" + index); }}```2. 使用LinkedList实现一个简单的栈和队列。

```javaimport java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class LinkedListTest {public static void main(String[] args) {Stack<Integer> stack = new Stack<>();Queue<Integer> queue = new LinkedList<>();// 栈操作stack.push(1);stack.push(2);stack.push(3);System.out.println("栈顶元素:" + stack.peek()); // 队列操作queue.offer(1);queue.offer(2);queue.offer(3);System.out.println("队列头元素:" + queue.peek()); }}```3. 创建一个包含字符串的HashSet集合,并实现元素的唯一性。

实验13集合框架与泛型实验报告

实验13集合框架与泛型实验报告

实验13集合框架与泛型实验报告实验13 集合框架与泛型一、实验目的和要求1. 了解Java集合框架的接口和实现类2. 理解泛型类、泛型接口、泛型方法的特点3. 掌握List接口及其实现类LinkedList、ArrayList4. 了解Set接口及其实现类HashSet、TreeSet5. 了解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集合来管理可被数量的学生对象。

另外还需要设计测试类T est来验证StudentManager的功能。

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

具体功能要求同第3题,但是需要用Set的实现类(比如HashSet、TreeSet)管理学生对象。

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

自-实验六:Java集合与泛型完整

自-实验六: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、编写程序练习List集合的基本使用:代码如下:packagezhoupeili;import java.util.*;public class L1{public staticvoidmain(String[] args) {ﻩList names=new ArrayList();names.add("张三");ﻩnames.add("李四");ﻩﻩnames.add("王五");ﻩnames.add("马六");names.add("赵七");for(inti=0; i < names.size(); i++){ ﻩSystem.out.println("第"+ (i + 1)+ "条数据为:"+ names.get(i));ﻩﻩ}ﻩSystem.out.println("集合大小为:" + names.size());ﻩﻩnames.remove(2);ﻩfor (int i = 0; i< names.size();i++){ﻩﻩSystem.out.println("第" + (i + 1) + "条数据为:" +names.get(i));ﻩﻩ}ﻩSystem.out.println("第3条数据为:"+ names.get(2));ﻩSystem.out.println("集合大小为:"+ names.size());}}调试结果如下图:2、编写程序练习Map集合的基本使用:代码如下:package zhoupeili;import java.util.*;import java.util.Map.Entry;public class L2 {public static void main(String[] args) {ﻩMapperson=new HashMap();person.put("id", "1");ﻩﻩperson.put("name","张三");person.put("sex","男");person.put("age","25");person.put("love","爱学Java");Iterator it =person.entrySet().iterator();while(it.hasNext()){Map.Entry entry=(Entry)it.next();ﻩSystem.out.println("键:" +entry.getKey()+ ",值:"+ entry.getValue());}System.out.println("集合大小为:"+person.size());person.remove("age");System.out.println("age:"+ person.get("age"));System.out.println("集合大小为:"+person.size());ﻩ}}调试结果如下图:六、实验感想Map中每项都是成对出现的,它提供了一组键值的映射。

Java程序设计实战案例教程 第22章 集合框架和泛型

Java程序设计实战案例教程 第22章 集合框架和泛型

在列表的开头插入指定元素,该方法从JDK1.6开始是Deque接口中的 方法
缺点:空间是连续的,删除或插入元素,需要大量移动元素
4
该类是JDbKo1o.l2e版an,线off程er不La同st步(E的e,) 在多将线指程定操元作素时添,加会到提列表高的访末问尾效,率作,用但与会ad降d(低E 程e)序方的法的安功全能性相同,
ListIterator接口的产生 在使用迭代器对象遍历集合时,使用 集合的添加方法,试图在遍历的过程中添 加无素,则会出现并发修改异常 解决方案:使用迭代器对象遍历集合, 使用迭代器对象添加元素
示例
泛型
为什么需要使用泛型
在向集合中添加元素时进行了向上类型转换转成了Object类型 在进行元素的遍历时,强制进行了向下类型转换,转成了String类型 结论:编译正常,但在运行时,就会产生类型转换异常 解决方案:像数组一样在创建对象时,就明确规则集合中所存储的元素的类型,
方法
描述
List接口常用的实现类
1 ArrayList void addFirst(E e)
在列表的开头插入指定元素
2
继承AbstvroaicdtLiasdtd类Las实t(现E Lei)st接口 将指定元素添加到列表的末尾
3
增底 优加层点数:据遍b结历oo构和le是根an数据组索off引er访Fi问rs效t(率E 高e)
一次性删除集合中的全部对象
8
boolean
removeAll(Collection<?> c) 将两个集合中相同的对象删除
9
boolean
retainAll(Collection<?> c) 将两个集合中不相同的对象删除

Java泛型总结报告精选

Java泛型总结报告精选

Java泛型总结报告Java泛型总结报告精选篇一:Java泛型总结1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。

可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。

可以在集合框架(Collection framework)中看到泛型的动机。

例如,Map 类允许您向一个Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如String)的对象。

因为Map.get() 被定义为返回Object,所以一般必须将Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:Map m = new HashMap();m.put("key", "blarg");String s = (String) m.get("key");要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个String。

但是有可能某人已经在该映射中保存了不是String 的东西,这样的话,上面的代码将会抛出ClassCastException。

理想情况下,您可能会得出这样一个观点,即m 是一个Map,它将 String 键映射到 String 值。

这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。

这就是泛型所做的工作。

2. 泛型的好处Java 语言中引入泛型是一个较大的功能增强。

不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。

这带来了很多好处:类型安全。

泛型的主要目标是提高 Java 程序的类型安全。

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

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<String,Student>();}public Student getA() {return a;}public void setA(Student a) {this、a = a;}HashMap<String,Student> map;public void delete(){System、out、println("请输入要删除表中元素ID");String id=Test、sc、next();if(map、containsKey(id)){map、remove(id);Collection<Student> c=map、values();Iterator<Student> it=c、iterator();while(it、hasNext()){a=it、next();a、sayHi();}}else{System、out、println("表中没有该元素");}}public void insert(){System、out、println("按顺序输入id、age、name");String name=Test、sc、next();int age=Test、sc、nextInt();String id=Test、sc、next();a=new Student(name,age,id);map、put(id, a);System、out、println("成功的插入一条记录");}public void update(){System、out、println("请输入要修改表中元素ID");String id=Test、sc、next();if(map、containsKey(id)){map、remove(id);System、out、println("按顺序输入name,age,id");id=Test、sc、next();String name=Test、sc、next();int age=Test、sc、nextInt();a=new Student(id,age,name);map、put(id, a);}else{System、out、println("表中没有该元素");}}public void select(){System、out、println("请输入要查询的方式1、查询单行2、查询全部");int i=Test、sc、nextInt();switch(i){case 1:{System、out、println("请输入要查询表中元素ID");String id=Test、sc、next();if(map、containsKey(id)){a=map、get(id);a、sayHi();}else{System、out、println("表中没有该元素");}}break;case 2:{Collection<Student> c=map、values();Iterator<Student> it=c、iterator();while(it、hasNext()){a=it、next();a、sayHi();}}break;}}}//testpackage com、cn;import java、util、*;public class Test {/*** @param args*/public static Scanner sc=new Scanner(System、in);public static void main(String[] args){// TODO Auto-generated method stuint i=0;Databace d=new Databace();while(i==0){System、out、println("1、储存学生信息");System、out、println("2、查询学生信息");System、out、println("3、修改学生信息");System、out、println("4、删除学生信息");System、out、println("退出");int j=Test、sc、nextInt();switch(j){case 1:d、insert();break;case 2:d、select();break;case 3:d、update();break;case 4:d、delete();break;default:i=1;}}}}提示:用id做map集合的键部分,用student对象做map集合的值部分效果显示:三、实验思想四、实验结果五、实验心得。

JAVA集合框架实验报告

JAVA集合框架实验报告

JAVA集合框架实验报告Java集合框架是Java编程语言中的一个重要部分,用于存储和处理一组对象。

它提供了一组类和接口,用于管理和操作数据集合。

在本次实验中,我将介绍Java集合框架的常用类和接口,并进行一些实际的操作。

Java集合框架中的一些常用类包括ArrayList、LinkedList、HashSet、TreeSet、HashMap和TreeMap等。

ArrayList是一种动态数组,可以根据需要自动增长和缩小。

LinkedList是一种双向链表,可以在头部和尾部添加和删除元素。

HashSet是一种无序的集合,不允许重复元素。

TreeSet是一种有序的集合,它按照元素的自然顺序进行排序。

HashMap是一种无序的键值对集合,不允许重复键。

TreeMap是一种有序的键值对集合,按照键的自然顺序进行排序。

在实验中,我首先创建了一个ArrayList对象,并使用add(方法向其中添加一些字符串元素。

然后,我使用get(方法和foreach循环遍历了该列表,并打印出其中的元素。

接下来,我创建了一个LinkedList对象,并使用add(, remove(和get(方法对其进行了操作。

接下来,我创建了一个HashSet对象,并使用add(方法向其中添加了一些整数元素。

然后,我使用contains(方法检查了该集合中是否包含一些特定元素,并使用remove(方法将该元素从集合中删除。

最后,我使用size(方法获取了该集合的大小。

在之后的实验中,我创建了一个TreeSet对象,并使用add(方法向其中添加了一些字符串元素。

然后,我使用iterator(方法获取了该集合的迭代器,并使用迭代器遍历了集合中的元素。

接下来,我创建了一个HashMap对象,并使用put(方法将一些键值对添加到该映射中。

然后,我使用get(方法根据键获取对应的值,并使用containsKey(方法检查该映射中是否包含一些特定的键。

实验05 集合类与泛型 实验报告

实验05 集合类与泛型 实验报告

实验05 集合类与泛型实验报告实验五集合类与泛型1.实验目的(1)掌握ArrayList类与LinkedList类的用法;(2)掌握TreeSet类的用法;(3)掌握Map接口及其实现类的用法(4)掌握泛型的用法。

2.实验内容实验题1 有四个类,主类Store在包.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子类,Product类实现Comparable接口,重写了Comparable接口中方法compareTo,实现了product对象按照价格排序。

基本要求:(1)在主类Store中实例化多个Mobile类与Mp3Player的实例,分别将这些实例用ArrayList与LinkedList存放,最后用StringBuilder存放并将其输出。

(2)用迭代器(iterator)将实例对象输出(要求用加强型for循环)。

实验结果:代码: Store类:package .nwsuaf.jp.p4; import java.util.ArrayList; importjava.util.Arrays; import java.util.Iterator; import.nwsuaf.jp.p4.data.Mobile; import .nwsuaf.jp.p4.data.Mp3Player; import .nwsuaf.jp.p4.data.Product; public class Store { publicstatic void main(String[] args) { Mp3Player p1 = new Mp3Player(\, 399.0f); Mp3Player p2 = new Mp3Player(\, 580.0f); Mp3Player p3 = new Mp3Player(\XMMp3Play(256MB)\, 930.0f); Mobile m1 = new Mobile(\, 1780.0f); Mobile m2= new Mobile(\, 1450.0f); Product[] products = { p1, p2, p3, m1, m2 }; Arrays.sort(products); ArrayList list = new ArrayList(); for (int i = 0;i < products.length; i++) { list.add(products[i]); }// 用StringBuilder输出 StringBuilder text = new StringBuilder(); for (Product product : products) { text.append(product); text.append(\); } System.out.println(\用StringBuilder输出:\); System.out.println(\ + \ + text+ \ + Product.getCount() + \); // 用迭代器输出 Iterator it = list.iterator(); System.out.println(\用迭代器输出:\); System.out.println(\); while(it.hasNext()) { System.out.println(it.next()); } System.out.println(\are\ + Product.getCount() + \products.\); } }Product类:package .nwsuaf.jp.p4.data; @SuppressWarnings(\) public abstractclass Product implements Comparable { private String Name; private Float price; public static int count = 0; public Product(String name, Floatprice) { super(); Name = name; this.price = price; ++count; }public String getName() { return Name; } public void setName(String name) { Name = name; } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } public staticint getCount() { return count; } public static void setCount(int count){ Product.count = count; } @Override public String toString(){ return getName() + \ + getPrice() + \; } public abstract voidoutput(Product p); @Override public int compareTo(Object o) { // TODOAuto-generated method stub Product product = (Product) o; return newFloat(getPrice()).compareTo(product.getPrice()); } public void sell(int i) { // TODO Auto-generated method stub }}Mp3Playert类:public class Mp3Player extends Product { public Mp3Player(String name,Float price) { super(name, price); } @Override public voidoutput(Product p) { System.out.println( Mp3Player.class.toString()); } } Mobile类:package .nwsuaf.jp.p4.data; public class Mobile extends Product{ public Mobile(String name, Float price) { super(name, price); }@Override public void output(Product p){ System.out.println( Mobile.class.toString()); } } 实验题2 项目包含类见实验题1。

java集合框架实验报告

java集合框架实验报告

java集合框架实验报告实验报告:Java集合框架一、实验目的通过本次实验,我们希望达到以下目的:1. 掌握Java集合框架的基本概念和组成。

2. 学会使用Java集合框架中的常用类和接口,如List、Set、Map等。

3. 理解集合框架中的数据结构及其特点。

4. 掌握集合框架中的常用算法和操作。

二、实验内容1. 了解Java集合框架的组成。

2. 实现List接口的ArrayList类和LinkedList类。

3. 实现Set接口的HashSet类和TreeSet类。

4. 实现Map接口的HashMap类和TreeMap类。

5. 使用迭代器和Lambda表达式遍历集合元素。

6. 实现自定义的集合类。

三、实验步骤1. 导入Java集合框架中的常用类和接口。

2. 使用ArrayList和LinkedList实现List接口,并比较它们的性能差异。

3. 使用HashSet和TreeSet实现Set接口,并比较它们的性能差异。

4. 使用HashMap和TreeMap实现Map接口,并比较它们的性能差异。

5. 使用迭代器和Lambda表达式遍历集合元素,理解它们的用法和特点。

6. 实现自定义的集合类,包括添加、删除、查找等操作。

四、实验结果与分析通过本次实验,我们掌握了Java集合框架的基本概念和组成,学会了使用Java集合框架中的常用类和接口,理解了集合框架中的数据结构及其特点,掌握了集合框架中的常用算法和操作。

同时,我们还比较了ArrayList、LinkedList、HashSet、TreeSet、HashMap和TreeMap等类的性能差异,了解了它们的特点和使用场景。

此外,我们还实现了自定义的集合类,进一步加深了对集合框架的理解和应用。

五、实验总结与建议通过本次实验,我们不仅掌握了Java集合框架的基础知识,还学会了如何在实际开发中运用这些知识。

在未来的学习和工作中,我们可以继续深入学习Java集合框架的高级特性,如泛型、并发集合等,以更好地解决实际问题。

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

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

2.掌握 Map 接口下 HashMap 及 HashTable的使用方法
3.掌握集合中泛型的使用
二、实验内容
利用集合完成象数据库那样存储数据,并且可以简单查询,利用 map 存储学生信息,字段如下: id ,name,age,实现步骤:
(1)创建类,类图如下:
(2)在 main 方法编写逻辑代码
(3)运行程序并测试结果
package ;
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 ;
import java.util.Collection; import java.util.HashMap; import java.util.Iterator;
public class
private
Databace { Student a ;
public Databace() {
super();
map= new HashMap<String,Student>(); }
public Student getA() {
return a;
}
public
this void
. a =
setA(Student
a;
a ) {
}
HashMap<String,Student>
public void delete()
{
map;
System. out .println( String id =Test.
if( map .containsKey(
" 请输入要删除表中元素
sc .next();
id ))
ID" );
{
map .remove(id );
Collection<Student> Iterator<Student> while ( it.hasNext())
c = map .values(); it= c .iterator();
{
a =it .next();
a .sayHi();
}
}
else
{
System. out .println(" 表中没有该元素" );
}
}
public void insert()
{
System. out .println(" 按顺序输入id、 age、 name" );
String name =Test. sc .next();
int age =Test. sc .nextInt();
String id =Test. sc .next();
a =new Student(name , age , id );
map .put( System.
id , a);
out .println(" 成功的插入一条记录" );
}
public void update() {
System. out .println( String id =Test.
if( map .containsKey(
" 请输入要修改表中元素
sc .next();
id ))
ID" );
{
map .remove(id );
System. out .println(" 按顺序输入
id =Test. sc .next();
String name =Test. sc .next();
int age =Test. sc .nextInt();
a =new Student(id , age , name );
map .put( id , a );
name,age,id");
}
else
{
System.out .println(" 表中没有该元素" );
}
}
public void select()
{
System. out .println(" 请输入要查询的方式
int i =Test. sc .nextInt();
switch ( i )
{
case 1:
{
1. 查询单行
2. 查询全部" );
System. out .println( String id =Test.
if( map .containsKey(
" 请输入要查询表中元素
sc .next();
id ))
ID" );
{
a =map .get( id );
a .sayHi();
}
else
{
System. out .println(" 表中没有该元素" );
}
} break ;
case 2:
{
Collection<Student> Iterator<Student> while ( it.hasNext())
c =map .values(); it= c .iterator();
{
a =it .next();
a .sayHi();
}
} break ;
}
}
}
//test
package import public
; java.util.*; class Test {
/**
*@param args */
public static public static {Scanner sc = new Scanner(System. void
main(String[] args )
in );
//TODO Auto-generated method stu
int i =0;
Databace d= new Databace();
while ( i ==0)
{
System.out .println("1.储存学生信息" );
System. out .println(
System. out .println(
System. out .println(
System. out .println( int j =Test. sc .nextInt(); switch ( j )
{
case 1:
d .insert();break cas
e 2:
d .select();break cas
e 3:
d .update();break cas
e 4:
d .delete();break
default:
i =1;;
;
;
;
"2.查询学生信息
"3.修改学生信息
"4.删除学生信息
"退出");
" );
" );
" );
}
}
}
}
提示:用 id 做 map 集合的键部分,用student 对象做 map 集合的值部分效果显示:
三、实验思想
四、实验结果
五、实验心得。

相关文档
最新文档