如何将hashmap键用于字符串数组?

时间:2012-08-31 08:40:16

标签: java arrays hashmap

我目前正在进行多课程作业,我必须根据程序中是否存在先决条件来添加课程。 我使用hashmap将我的课程存储在程序类中。 (我想我会派上用场)但是,我确保这些preReq存在时遇到了一些麻烦。 这是我目前正在进行的一些代码

public boolean checkForCourseFeasiblity(AbstractCourse c) throws ProgramException 
{


    AbstractCourse[] tempArray = new AbstractCourse[0];


    tempArray=    courses.keySet().toArray(tempArray);


    String[] preReqsArray = new String[1];
    preReqsArray = c.getPreReqs();
    //gets all course values and stores them in tempArray


    for(int i = 0; i < preReqsArray.length; i++)
    {

        if(courses.containsKey(preReqsArray[i])) 
        {
            continue;
        }
        else if (!courses.containsKey(preReqsArray[i]))
        {
            throw new ProgramException("preReqs do not exist"); //?

        }


    }
    return true;
}
基本上,tempArray将所有keySet存储在课程hashmap中,我需要将它们与preReqs(这是一个字符串数组)进行比较。如果preReqs存在于键集中,则添加课程,如果他们不添加课程。如果课程通过我添加异常,则返回true。请记住我的键集是字符串,例如键集值可以是“Programming1”,并且课程所需的先决条件可以是“programming1”。如果是这种情况,则添加课程,因为keyset中存在prereq课程。 我相信我的错误是当我用c.getPreReqs初始化mypreReqsArray时(注意:getPreReqs是一个带有返回类型String []的getter)。 如果有人可以帮助我解决我的困境,那真的很棒。香港专业教育学院试图提供尽可能多的,我觉得我在过去的3个小时里一直四处走动:( - 谢谢你。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情,你不需要tempArray。 “for each”循环看起来也更好。如果你想抛出一个异常,我会把这个逻辑放在调用这个方法的地方。

public boolean checkForCourseFeasiblity(AbstractCourse c)
{

  for(String each : c.getPreReqs())
  {
      if(! courses.containsKey(each)) 
      {
          return false;
      }
  }

  return true;
}