Student の結果リストの ArrayList に計算結果を挿入しようとすると問題が発生します。
こんなふうになります。
- ArrayList (FullList と呼ばれる) は、Student オブジェクトのリストを保持します。
- Student オブジェクトには、名前 (文字列として) と結果リスト (ArrayList として) があります。
- Result オブジェクトを受け取ると、名前 (文字列として) と結果 (整数として) が付属しています。
- この Result オブジェクトを Student オブジェクトの結果リストに挿入したいと考えています。
- ただし、生徒の名前は事前に定義されていませんが、結果オブジェクトを受け取ると推測されます。
- つまり、FullList に Student オブジェクトがない場合、Result オブジェクトは Student オブジェクトの作成をトリガーし、それ自体を Student オブジェクトの結果リストに挿入します。次に、作成された Student オブジェクトが FullList に挿入されます。
以下のコードを書きましたが、各タグに複数の結果を挿入するのではなく、FullList に同じタグを複数挿入しています。
Q1: 何が悪いのかわからない!教祖からの心の刺し傷が必要です! Q2: 次のコードを最大 90,000 人の学生に使用します。これは学生の成績を収容する実行可能な方法ですか?
class Result {
String name;
int result;
public Result(String name, int result) {
this.name = name;
this.result = result;
}
/* start - Getting hungup over this method
* Something is wrong here and i don't know what it is
*/
public void setResult(ArrayList <Student> fullList) {
for (Student s : fullList) {
if (s.getName().equalsIgnoreCase(this.name)) {
s.setResult(this);
}
else { /* enters here if Student does not exist in fullList */
Student s = new Student(this.name); /* create new student */
s.setResult(this); /* insert result into Student's resultslist */
fullList.add(s); /* add Student into fullList */
}
}
}
/* end */
public String getName() {
return this.name;
}
}
class Student {
String name;
ArrayList <Result> resultslist;
public Student(String name) {
this.name = name;
resultslist = new ArrayList <Result> ();
}
public void setResult(Result result) {
this.resultslist.add(result);
}
public String getName() {
return this.name;
}
}
class StudentResults {
public static void main (String [] args) {
ArrayList <Student> FullList = new ArrayList <Student> ();
Result r1 = new Result("John", 12);
Result r2 = new Result("Jamie", 99);
Result r3 = new Result("John", 69);
Result r4 = new Result("Jacque", 56);
Result r5 = new Result("Jacque", 100);
Result r6 = new Result("Jamie", 100);
r1.setResult(FullList);
r2.setResult(FullList);
r3.setResult(FullList);
r4.setResult(FullList);
r5.setResult(FullList);
r6.setResult(FullList);
}
}