0

HashMap<String, ArrayList<Class>>私はグーグルで検索しましたが、への変換に出くわしませんでしたArrayList<Class>。誰かが私を助けてくれませんか?

基本的に、以下のメソッドgetStudentLstをコンストラクターの呼び出しから変更し、ハッシュマップを以下のようにarrayListに変換します。何度も試しましたが、エラーが発生し続けます。どこが間違っているのでしょうか。

  ArrayList<Student> arrStudLst = new ArrayList<Student>(hmpStudent.keySet());
  Collectoins.sort(arrStudLst, new Comparator());
  return arrStudLst;

しかし、それは機能せず、エラーを生成しました "コンストラクターArrayList(Set)は未定義です

どんな助けでも大歓迎です!アダン

/* works well but i want to avoid calling constructor */
public ArrayList<Student> getStudentLst(HashMap<String, ArrayList<Student>> hmpStudent)
{
     ArrayList<Student> arrStudLst = new ArrayList<Student>();   
     Set<String> keylst = hmpStudent.keySet();
     Student student;
     for(String keys: keylst)
     {         
        for(Student f: hmpStudent.get(keys))
        {       
         student = new Student(f.getName(),f.getGrade(), f.getTeacher());                arrStudLst.add(student);
        }
     }
     Collections.sort(arrStudLst,new StudentComparator());
     return arrStudLst;
}
4

4 に答える 4

1

マップのキーを使用してリストを初期化しようとしました。しかし、キーは文字列であり、学生ではありません。

マップのすべての値のすべての学生を含むリストを返す必要があります。したがって、コードは次のようになります。

Set<Student> allStudents = new HashSet<Student>(); // use a set to avoid duplicate students
for (List<Student> list : map.values()) {
    allStudents.addAll(list);
}
List<Student> allStudentsAsList = new ArrayList<Student>(allStudents);
于 2012-12-24T13:30:04.523 に答える
0

私は試すことができます

ArrayList<MyClass> list = new ArrayList<>();
for (ArrayList<MyClass> l : map.values()) {
    list.addAll(l);
}
于 2012-12-24T13:30:15.010 に答える
0

キーは文字列なので、 a ではなく ahmpStudent.keySet()を返しますList<String>List<Student>

 new ArrayList<Student>(hmpStudent.keySet());

したがって、上記のステートメントは失敗します。以下の方法を使用できます

public List<Student> getAllStudents(Map<String, ArrayList<Student> map){
   List<Student> allStudents = new ArrayList<Student>();
   for (List<Student> list : map.values()) {
       allStudents.addAll(list);
   }
   return allStudents;
}
于 2012-12-24T13:43:11.900 に答える