在Java中存储对象集合的最佳方法?

时间:2015-08-31 15:59:46

标签: java oop

我正在为学生信息系统创建一个转储Java应用程序,用于学习和实现继承,抽象,多态和封装等OOPS概念。

我正在做的是,我创建了Faculty班级,Student班级和大学班级。现在我想在大学里增加新的教师。所以我的方法是在大学课程中创建一个方法,即addFaculty(Faculty f)fireFaculty(Faculty f),现在我想在Faculties课程中添加College

最好的办法是什么?如何在Faculty对象中存储College对象的列表。因为我可以在大学里增加一个以上的教师和一个以上的学生。

在OOPS中解决此问题的最佳方法是什么?

这是我实施的College.java代码,它运行正常,但这是我解决它的最好方法吗?

public class College 
{
String name;
String location;
String courses[];
HashMap<String,Faculty> faculties;
int noOfFaculties = 0;
int noOfStudents = 0;

public College(String name,String location,String courses[])
{
    this.name = name;
    this.location = location;
    this.courses = courses;
    faculties = new HashMap<>();
}

public void addFaculty(Faculty faculty)
{
    faculties.put(faculty.getName(),faculty);
}

public void printFaculties()
{
    Set<String> set = faculties.keySet();
    if(set.size()>0)
    {
        for(String s:set)
        {
            System.out.println(faculties.get(s).getName());
        }
    }
    else
    {
        System.out.println("No Faculties Currently Working");
    }
}

public void fireFaculty(Faculty faculty)
{
    faculties.remove(faculty.getName());
}
public String getName()
{
    return name;
}

public String getLocation()
{
    return location;
}

public String[] getCourses()
{
    return courses;
}
}

3 个答案:

答案 0 :(得分:3)

有很多方法可以做到。处理存储对象集合的最简单方法可能是使用Java提供的Collections之一。对于初学者,可能最容易理解的是ArrayList,它基本上是一个根据集合中对象的数量动态增大的数组。

因此,作为一个例子,您的代码可能是这样的:

public class College
{
    private ArrayList<Faculty> faculty;

    public College()
    {
        faculty = new ArrayList<Faculty>();
    }

    public void addFaculty(Faculty f)
    {
        faculty.add(f);
    }

    public void fireFaculty(Faculty f)
    {
        faculty.remove(f);
    }
}

答案 1 :(得分:3)

如果你不介意重复使用HashSet<Faculty>,如果你不介意使用List<Faculty>

示例:

class College {
    private List<Faculty> listFactories = new ArrayList<>();  // dupes allowed
    private Set<Faculty> setFactories = new HashSet<>(); // no dupes allowed
}

Check collections API

答案 2 :(得分:0)

imho这取决于大学学院提供什么样的服务。如果我正在编码,我会从: -

开始
<div class="dropdown-toggle" data-toggle=>"dropdown"><%= link_to current_user.first_name, profileshow_path(current_user)%></div>
                    <ul class="dropdown-menu">
                       <li><%= link_to "Account Settings", edit_user_registration_path%></li>
                       <li><%= link_to "Your Profile", profileshow_path(current_user) %></li>
                       <li class='last'><%= link_to "Logout", destroy_user_session_path, :method => :delete %></li>
                    </ul>





<script>
$('.dropdown-toggle').dropdown()
</script>

如果需要,可以在以后更改为替代品。