Java从TreeMap中检索或删除值

时间:2013-08-01 01:07:01

标签: java

我在从列表中检索学生信息或删除它时遇到问题... Heelp ...以下代码:

import java.util.*;
public class Directory
{
    private TreeMap<String, Student> studentList;
    private int numberOfEntries;

    public Directory()
    {
        studentList = new TreeMap<String, Student>();
        numberOfEntries = 0;
    }

    public void addStudent(Student newStudent)
    {
        studentList.put(newStudent.StudentInfo(), newStudent);
        //numberOfEntries++;
    }

    public void StudentInfo(String StudentInfo)
    {
        Object obj = studentList.get(StudentInfo);
        System.out.println(obj);
    }

    public void removeStudent(String StudentInfo)
    {
        Object obj = studentList.remove(StudentInfo);
        System.out.println(obj + "Removed");
    }


    public void printStudentList()
    {
        System.out.println("List of Students: " + studentList.keySet());
    }
}

=======学生班========(人员包含第一个,最后一个和电子邮件)

public class Student extends Persons
{
    private String Sclass;

    public Student(String Lname, String Fname, String Email, String Sclass)
    {
        super(Lname, Fname, Email);
        this.Sclass = Sclass;
    }

    public String StudentInfo()
    {
        return " Full Name " + Lastname + " " + Firstname + "\n" + 
               "E-Mail: " + Email + "\n" +
               "Class Attending: " + Sclass;
    }

    public String getName()
    {
        return Lastname;
    }
}

1 个答案:

答案 0 :(得分:2)

我可以尝试为你调试这个,但那会破坏目的。 (这是你的作业......目的是自己学习如何做。)

我的建议如下:

  1. FIRST 修复样式错误:

    • 变量的名称​​总是以小写字母开头......除非它们是static final常量。

    • 方法的名称​​总是以小写字母开头

    • 方法和变量名称也应该有意义且一致。例如:

      public void  removeStudent(String StudentInfo)
      

      此处StudentInfo实际上需要学生姓名,而不是StrudentInfo方法创建的“学生信息”字符串......

      另一个例子:lnamefname没有意义。 (我可以猜出他们的意思,但那不够好。)

  2. 创建一个测试程序,创建这些类的实例并对它们执行一系列测试。从简单的事情开始,然后继续更复杂的事情。

    (在现实世界中,我们设置了一套更为正式的“单元测试”......但你可能尚未做好准备。


  3. 事实上,如果您选择更有意义的名称,然后仔细查看 以了解这些名称的使用方式,那么您的错误应该“跳出来并击中您的鼻子”。

    但如果您自己完成整个过程,您将获得最大的收益。