任务一:用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
4. 运行示例:
姓名:张三 身份证号:12310000 姓名:李四 身份证号:12310000 语文:89 数学93 英语94 姓名:王五 身份证号:12330000 工资:40000.0 public class MyList {
public static void main(String[] args) {
LinkedList
Student s=new Student(\李四\ Teacher t=new Teacher(\王五\ m.add(p); m.add(s); m.add(t);
Iterator
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
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
38. while(i.hasNext()){ 39. System.out.println(i.next()); 40. } 41. System.out.println(\添加之后:\42. t.add(p4); 43. Iterator
任务三:用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
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(); } }
相关推荐: