HashMap a partir de 2 listas

Esse é meu código:

[code]package cha06;

import java.util.*;

public class Student{
String name;
int studentID;

public Student(String name, int id){
this.name = name;
studentID = id;

}
public int getStdID(){
return this.studentID;
}

}[/code]

[code]package cha06;

class Grades{

int studentID;
int grade;

public Grades(int grade, int id){
this.grade = grade;
studentID = id;

}
public int getGradeID(){
return this.studentID;
}
public int getGrade(){
return this.grade;
}
}[/code]

[code]package cha06;

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cha06.Student;

public class Files {

public static void main(String[] args){
	List<Student> s = new ArrayList();
	List<Grades> g = new ArrayList();
	Map<Student,List>studentGrades = new HashMap();
	//Map must be: {Fred =[10, 2], Martha = [4, 8], John[3, 7], Paul =[6, 4]}
	Student s1 = new Student("Fred", 5);
	Student s2 = new Student("Martha", 3);
	Student s3 = new Student("John", 7);
	Student s4 = new Student("Paul", 8);
	s.add(s1);
	s.add(s2);
	s.add(s3);
	s.add(s4);	
	g.add(new Grades(10, 5));
	g.add(new Grades(2, 5));
	g.add(new Grades(4, 3));
	g.add(new Grades(3, 7));
	g.add(new Grades(7, 7));
	g.add(new Grades(6, 8));
	g.add(new Grades(8, 3));
	g.add(new Grades(4, 8));

	List gradesToStudent = new ArrayList();
                        //This is where im struggling
	            for(int i = 0 ; i<s.size();i++){
	            for(int j = 0;  j<s.size();j++){
	                Grades grades = g.get(i);
	                Student student = s.get(j);
	                if(student.getStdID() == grades.getGradeID()){
	                gradesToStudent.add(grades.getGrade());
	                
	                studentGrades.put(student, gradesToStudent);


	                }
	            }
	}
	System.out.println(studentGrades.toString());
}

}[/code]

Oque eu quero fazer é que o meu Mapa tenha como Key o nome do student e como valores as notas que tem o mesmo studentID que esse nome
Meu loop ai em baixo tá resultando em um mapa, mas não leva em conta as ids:
Era pra ser: {Fred =[10, 2], Martha[4, 8] etc
Mas meu loop resulta em Fred =[10,2,4,7]
Onde está meu erro?

Creio que o erro esta no seu primeiro for.

Não seria g.size() ao invés de s.size() ?