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

合集下载

集合应用Java实验报告

集合应用Java实验报告

集合应用Java实验报告引言集合是一种用于存储多个数据对象的容器,Java 中提供了多种集合类来支持不同的需求。

在本次实验中,我们将学习和应用Java 集合框架的相关知识,掌握集合的基本用法和常见操作。

实验目的1. 理解集合的概念和作用。

2. 学习并掌握Java 集合框架提供的常见集合类。

3. 掌握集合的基本操作和常见算法。

实验内容本次实验包括以下几个部分:1. Java 集合框架概述2. 集合类的分类和特点3. 集合的基本操作4. 常见集合类的使用示例Java 集合框架概述Java 集合框架是Java 提供的一组类和接口,用于存储和操作多个数据对象。

它提供了各种类型的集合类,包括List(列表)、Set(集合)和Map(映射),以及一些工具类和算法。

使用集合框架可以更方便地进行数据的存储、查找和处理,提高编程效率和代码的可读性。

集合类的分类和特点在Java 集合框架中,集合类可以分为三类:List、Set 和Map。

1. List:有序可重复的集合,可以通过索引访问元素。

常见的实现类有ArrayList 和LinkedList。

2. Set:无序不重复的集合,不允许存储重复元素。

常见的实现类有HashSet 和TreeSet。

3. Map:存储键值对的集合,根据键查找和操作值。

常见的实现类有HashMap 和TreeMap。

每种类型的集合类都有其特点和用途,根据具体需求选择合适的集合类进行使用。

集合的基本操作集合类提供了一系列用于操作集合的方法,常见的操作包括添加元素、删除元素、查找元素和遍历集合。

以ArrayList 为例,介绍集合的基本操作:java创建一个ArrayList 对象List<String> list = new ArrayList<>();向集合中添加元素list.add("Java");list.add("Python");list.add("C++");删除集合中的元素list.remove("Python");查找集合中的元素boolean contains = list.contains("Java");遍历集合中的元素for (String elem : list) {System.out.println(elem);}通过以上代码,我们可以看到,ArrayList 的操作非常简单和直观,而其他集合类的操作也类似。

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实验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实验报告

java实验报告

java实验报告Java 实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解和掌握Java 语言的基本语法、面向对象编程的概念和方法,以及常用类库的使用。

同时,培养我们的问题解决能力、逻辑思维能力和代码规范意识,为今后的软件开发工作打下坚实的基础。

二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java Developers3、 JDK 版本:JDK 18三、实验内容本次实验共包括以下三个部分:1、 Java 基本语法练习变量与数据类型运算符与表达式控制流语句(ifelse、for、while、dowhile)数组2、面向对象编程实践类与对象的定义和使用构造函数与方法重载封装、继承与多态抽象类与接口3、 Java 常用类库应用String 类与字符串操作集合框架(ArrayList、HashMap)文件输入输出(File、FileReader、FileWriter)四、实验步骤及代码实现1、 Java 基本语法练习变量与数据类型:```javapublic class VariableDataType {public static void main(String args) {int age = 20;double salary = 50005;String name ="张三";boolean isStudent = true;Systemoutprintln("年龄:"+ age);Systemoutprintln("工资:"+ salary);Systemoutprintln("姓名:"+ name);Systemoutprintln("是否是学生:"+ isStudent);}}```运算符与表达式:```javapublic class OperatorExpression {public static void main(String args) {int num1 = 10;int num2 = 5;int sum = num1 + num2;int difference = num1 num2;int product = num1 num2;int quotient = num1 / num2;int remainder = num1 % num2; Systemoutprintln("和:"+ sum);Systemoutprintln("差:"+ difference);Systemoutprintln("积:"+ product);Systemoutprintln("商:"+ quotient);Systemoutprintln("余数:"+ remainder);}}```控制流语句:```javapublic class ControlFlowStatement {public static void main(String args) {// ifelse 语句int score = 80;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}// for 循环for (int i = 1; i <= 5; i++){Systemoutprintln("第" + i +"次循环");}// while 循环int j = 1;while (j <= 5) {Systemoutprintln("第" + j +"次 while 循环");j++;}// dowhile 循环int k = 1;do {Systemoutprintln("第" + k +"次 dowhile 循环");k++;} while (k <= 5);}}```数组:```javapublic class ArrayExample {public static void main(String args) {//一维数组int numbers ={1, 2, 3, 4, 5};for (int num : numbers) {Systemoutprintln(num);}//二维数组int matrix ={{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int row : matrix) {for (int num : row) {Systemoutprint(num +"");}Systemoutprintln();}}}```2、面向对象编程实践类与对象的定义和使用:```javapublic class Person {private String name;private int age;public Person(String name, int age) {thisname = name;thisage = age;}public void showInfo(){Systemoutprintln("姓名:"+ name +",年龄:"+ age);}public static void main(String args) {Person person1 = new Person("张三", 20);person1showInfo();}}```构造函数与方法重载:```javapublic class ConstructorOverloading {private String name;private int age;public ConstructorOverloading(String name) {thisname = name;}public ConstructorOverloading(String name, int age) {thisname = name;thisage = age;}public void showInfo(){if (age == 0) {Systemoutprintln("姓名:"+ name);} else {Systemoutprintln("姓名:"+ name +",年龄:"+ age);}}public static void main(String args) {ConstructorOverloading person1 = new ConstructorOverloading("张三");person1showInfo();ConstructorOverloading person2 = new ConstructorOverloading("李四", 25);person2showInfo();}}```封装、继承与多态:```java//父类class Animal {private String name;public Animal(String name) {thisname = name;}public void eat(){Systemoutprintln(name +"正在吃东西");}}//子类继承父类class Dog extends Animal {public Dog(String name) {super(name);}public void bark(){Systemoutprintln(name +"在叫");}}public class InheritancePolymorphism {public static void main(String args) {Animal animal = new Dog("小黑");animaleat();//向下转型为 Dog 类型调用 bark 方法if (animal instanceof Dog) {Dog dog =(Dog) animal;dogbark();}}}```抽象类与接口:```java//抽象类abstract class Shape {abstract void draw();}//实现抽象类的子类class Circle extends Shape {@Overridevoid draw(){Systemoutprintln("画一个圆");}}//接口interface Moveable {void move();}//实现接口的类class Car implements Moveable {@Overridepublic void move(){Systemoutprintln("汽车在移动");}}public class AbstractInterfaceExample {public static void main(String args) {Shape shape = new Circle();shapedraw();Moveable car = new Car();carmove();}}```3、 Java 常用类库应用String 类与字符串操作:```javapublic class StringOperation {public static void main(String args) {String str1 ="Hello, ";String str2 ="World!";String str3 = str1 + str2;Systemoutprintln(str3);int length = str3length();Systemoutprintln("字符串长度:"+ length);char charAt = str3charAt(5);Systemoutprintln("第 5 个字符:"+ charAt);boolean contains = str3contains("World");Systemoutprintln("是否包含 World:"+ contains);}}```集合框架(ArrayList、HashMap):```javaimport javautilArrayList;import javautilHashMap;import javautilMap;public class CollectionFramework {public static void main(String args) {// ArrayListArrayList<String> names = new ArrayList<>();namesadd("张三");namesadd("李四");namesadd("王五");for (String name : names) {Systemoutprintln(name);}// HashMapHashMap<String, Integer> ages = new HashMap<>();agesput("张三", 20);agesput("李四", 25);agesput("王五", 30);for (MapEntry<String, Integer> entry : agesentrySet()){Systemoutprintln(entrygetKey()+"的年龄是" +entrygetValue());}}}```文件输入输出(File、FileReader、FileWriter):```javaimport javaioFile;import javaioFileReader;import javaioFileWriter;import javaioIOException;public class FileIOExample {public static void main(String args) {//写入文件try (FileWriter writer = new FileWriter("outputtxt")){writerwrite("这是写入文件的内容");} catch (IOException e) {eprintStackTrace();}//读取文件try (FileReader reader = new FileReader("outputtxt")){int character;while ((character = readerread())!=-1) {Systemoutprint((char) character);}} catch (IOException e) {eprintStackTrace();}}}```五、实验结果与分析1、 Java 基本语法练习变量与数据类型:能够正确定义和使用各种数据类型的变量,并进行基本的运算和输出。

实验十 泛型与集合框架

实验十 泛型与集合框架

实验十泛型与集合框架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都使用泛型。

  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 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;
}
}
}
//test
package 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 stu
int 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集合的值部分效果显示:
三、实验思想
四、实验结果
五、实验心得。

相关文档
最新文档