第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/6/1 11:16:04 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

任务一:用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=\姓名:\身份证号码:\? return str; } ? public int compareTo(Object arg0) { ? Person p=(Person)arg0; ? return this.ID.compareTo(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=\语文成绩:\数学成绩:\英语成绩:

\? 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=\工资\ return super.toString()+str; } }

2. 分别为以上三个类创建对象:

Person对象 姓名:张三 身份证号:12310001 Student对象 姓名:李四 身份证号:12320002 语文: 89 数学: 93 英文: 94 Teacher对象 姓名:王五 身份证号:12330003 工资:4000

3. 将这三个对象存放在一个LinkedList对象中:

LinkedList list=new LinkedList();

4. 运行示例:

姓名:张三 身份证号:12310000 姓名:李四 身份证号:12310000 语文:89 数学93 英语94 姓名:王五 身份证号:12330000 工资:40000.0 public class MyList {

public static void main(String[] args) {

LinkedList m=new LinkedList(); Person p=new Person(\张三\

Student s=new Student(\李四\ Teacher t=new Teacher(\王五\ m.add(p); m.add(s); m.add(t);

Iterator i = m.iterator(); while(i.hasNext()){

System.out.println(i.next()); } }}

5. 练习使用LinkedList的其他方法。将自己的信息添加到链表的开头,以及结尾,

然后再删除自己的信息。

返回类型

方法名称

描述

void void E E boolean

addFirst() addLast() removeFirst() removeLast() 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 (other.name != null) return false;

} else if (!name.equals(other.name)) 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对象 姓名:张三 身份证号:12310001

再创建一个Person对象:

Person对象 姓名:李四 身份证号:12320002 Person对象 姓名:王五 身份证号:12330003 Person对象 姓名:王五 身份证号:12330003

能放入到刚才创建的HashSet中吗?通过这个对象来测试hashCode()方法和equals()方法的编写是否正确。

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

3. public static void main(String[] args) { 4. HashSet h=new HashSet(); 5. Person p=new Person(\张三\6. Person p4=new Person(\张三\7. h.add(p); 8. Person p1=new Person(\李四\9. Person p2=new Person(\王五\10. h.add(p1); 11. h.add(p2); 12. Iterator 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 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 t=new TreeSet(); 30. Person p=new Person(\张三\31. Person p1=new Person(\李四\32. Person p2=new Person(\王五\33. Person p4=new Person(\王五\34. t.add(p); 35. t.add(p1); 36. t.add(p2); 37. Iterator i=t.iterator();

38. while(i.hasNext()){ 39. System.out.println(i.next()); 40. } 41. System.out.println(\添加之后:\42. t.add(p4); 43. Iterator 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 m=new HashMap(); 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 +\ } else

System.out.println(\没有此人 \ bu.close(); } }

搜索更多关于: 实验6 泛型与集合框架 - 附答案 的文档
实验6 泛型与集合框架 - 附答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3ci171zx484x67j2puri_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top