当前位置:文档之家› 实验6 泛型与集合框架_附答案

实验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 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;●}●public String toString() {●String str=" 工资"+salary;●return super.toString()+str;●} }2.分别为以上三个类创建对象:3.将这三个对象存放在一个LinkedList对象中:LinkedList<Person> list=new LinkedList<Person>();4.运行示例:public class MyList {public static void main(String[] args) {LinkedList<Person> m=new LinkedList<Person>();Person p=new Person("张三","12310000");Student s=new Student("李四","12320000",89,93,94);Teacher t=new Teacher("王五","12330000",3000);m.add(p);m.add(s);m.add(t);Iterator<Person> i = m.iterator();while(i.hasNext()){System.out.println(i.next());}}}5.练习使用LinkedList的其他方法。

将自己的信息添加到链表的开头,以及结尾,然后再删除自己的信息。

返回类型方法名称描述void addFirst()将指定元素插入此列表的开头void addLast()将指定元素添加到此列表的结尾E removeFirst()移除并返回此列表的第一个元素E removeLast()移除并返回此列表的最后一个元素boolean add(Object o)将指定的元素添加到列表中任务二:用SET存放对象1.将以下三个Person类的对象放在一个HashSet中,由于HashSet不能存放重复的元素(姓名和身份证号都不能重复),所以在Person类中,需要覆盖hashCode()方法和equals()方法。

这里给出重写方法的程序:public boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (name == null) {if ( != null)return false;} else if (!name.equals())return false;if (id != other.id)return false;return true;}public int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((name == null) ? 0 :name.hashCode());result = prime * result + id;return result;}再创建一个Person对象:能放入到刚才创建的HashSet中吗?通过这个对象来测试hashCode()方法和equals()方法的编写是否正确。

1.把集合中的元素打印出来(使用迭代器Iterator类)。

2.public class MyHashSet {3. public static void main(String[] args) {4.HashSet<Person> h=new HashSet<Person>();5.Person p=new Person("张三","12310000");6.Person p4=new Person("张三","12310000");7.h.add(p);8.Person p1=new Person("李四","12320000");9.Person p2=new Person("王五","12330000");10.h.add(p1);11.h.add(p2);12.Iterator<Person> i = h.iterator();13.while(i.hasNext()){14.System.out.println(i.next());15.}16.//添加之后17.h.add(p4);18.System.out.println("添加之后");19.Iterator<Person> i1 = h.iterator();20.while(i1.hasNext()){21.System.out.println(i1.next());22.} }}23.用TreeSet存放上面三个人,要求按照身份证号排序,打印出来。

(注意使用TreeSet要实现Comparable接口,并覆盖compareTo()方法)24.import java.util.Iterator;25.import java.util.TreeSet;26.27.public class MYTreeSet {28. public static void main(String[] args) {29.TreeSet<Person> t=new TreeSet<Person>();30.Person p=new Person("张三","12310000");31.Person p1=new Person("李四","12320000");32.Person p2=new Person("王五","12330000");33.Person p4=new Person("王五","12330000");34.t.add(p);35.t.add(p1);36.t.add(p2);37.Iterator<Person> i=t.iterator();38.while(i.hasNext()){39.System.out.println(i.next());40.}41.System.out.println("添加之后:");42.t.add(p4);43.Iterator<Person> i1=t.iterator();44.while(i1.hasNext()){45.System.out.println(i1.next());46.} }}任务三:用Map存放对象设计一个TXT文件,里面存放了10个同学的学号和姓名。

给定学生的学号,问该学生在不在名单中,如果在,给出姓名。

[基本要求] 使用Java API中的Map相关的技术来完成实验任务。

●使用文件操作,读出文件中的学号和姓名;●学号作为KEY,姓名作为VALUE,放到MAP中;●从命令行中输入的学号,作为KEY,在MAP中进行检索。

public class MYMap {public static void main(String[] args) throws IOException {System.out.println("请输入文件的绝对路径");Scanner re=new Scanner(System.in);String wen=re.nextLine();BufferedReader bu=new BufferedReader(new FileReader(wen));HashMap<String, String> m=new HashMap<String,String>();String str;while((str=bu.readLine())!=null){String[]s=str.split(" ");m.put(s[0], s[1]);}String sr;System.out.println("请输入您要查询的学号:");String num=re.nextLine();System.out.println(num);if((sr=m.get(num))!=null){System.out.println(num +" "+sr);}elseSystem.out.println("没有此人");bu.close();}}。

相关主题