0

別の本当に明白な質問をしてすみません-私はハッシュマップに苦労しています。

私がやりたいのは、ハッシュマップに格納されているリストに値が格納されている順序を変更することです。イテレータは使用しません。

たとえば、学校のコースのリストがあり、各コースには学生のリストがあります。そこでは、ホールモニターの仕事は、ランダムに選ばれたコースのリストの最初の学生です。コースが選択されると、リストの一番上にある学生は、彼らが参加しているすべてのコースのリストの一番下に配置されます。9つのコースがあり、学生は複数の学生リストに表示できます。

私は次のようなことをしようとしています:

//instance variable
private HashMap<String, String[]> qualifiedStudents;
    qualifiedStudents = new HashMap<String, List<String>>();

  public void putStudentLastInRosters(String studentName)
  {
   for(String course : qualifiedStudents.keySet())
   {
      if(qualifiedStudents.get(course).contains(studentName)) 
    {
       qualifiedStudents.remove(course, studentName); 
       qualifiedStudents.put(course, studentName);
    }
  }

  }
4

6 に答える 6

1

これを試して:

//instance variable
private HashMap<String, List[]> qualifiedStudents;
    qualifiedStudents = new HashMap<String, List<String>>();

public String putStudentLastInRosters(String studentName) {
    for(String course : qualifiedStudents.keySet()) {
        List<String> students = qualifiedStudents.get(course);
        if(students.remove(studentName)) {
            students.add(studentName);
        }
    }
}
于 2012-04-19T13:17:14.187 に答える
1

マップではなく、リストを変更する必要があります。したがって、コードは次のようになります。

for (List<String> list : qualifiedStudents.values()) {
    if (list.remove(studentName)) {
        list.add(studentName);
    }
}
于 2012-04-19T13:17:46.577 に答える
0

このタスクにはSortedMapを検討してください。

独自のコンパレータを実装して、使用する並べ替え順序を反映させます。

于 2012-04-19T13:17:13.927 に答える