[英]Pair elements equally between two ArrayLists
我有一個這樣的學校作業:編寫一個方法,將學生和評分者列表作為參數,並返回一個 ArrayList,其中每個元素的格式為“studentName,graderName”。 學生應盡可能平均分配給評分者。 例如,您可以將 7 個學生分配給一個年級學生,將 6 個學生分配給另一個年級學生,但不能將 8 個學生分配給一個年級學生,而 5 個學生分配給另一個年級學生。
這就是我現在所擁有的。
public static ArrayList<String> assignGraders(ArrayList<String> students, ArrayList<String> graders) {
ArrayList<String> list = new ArrayList<>();
int average = students.size()/graders.size();
int j = 0; //Index of grader list
for(int i = 0; i<students.size(); i++) {
list.add(students.get(i) + ", " + graders.get(j));
if((i % average == 0) && (i!= 0) && (j<graders.size()-1)){
j++;
}
}
return list;
}
你應該這樣做:
public static ArrayList<String> assignGraders(List<String> students, List<String> graders) {
ArrayList<String> list = new ArrayList<>();
int average = students.size()/graders.size();
int j = 0; //Index of grader list
for(int i = 0; i<students.size(); i++) {
list.add(students.get(i) + ", " + graders.get(j));
j++;
if (j == graders.size()) {
j = 0;
}
}
return list;
}
假設您有 8 名學生和 3 名教師,您只需循環查看學生列表
First student --> first teacher
Second student --> Second teacher
Third student --> Third teacher
Fourth student --> first teacher
Fifth student --> Second teacher
Sixth student --> Third teacher
Seventh student --> first teacher
Eight Student --> Second Teacher
開始學習實現到接口,而不是實現到實現。 這里 List 是接口,ArrayList 是你的實現。 這樣你的api適應性更強
public static ArrayList<String> assignGraders(ArrayList<String> students, ArrayList<String> graders)
{
int studentsSize = students.size();
int gradersSize = graders.size();
int studentToGrader = studentsSize / gradersSize;
int assignedStudents = 0;
ArrayList<String> studToGrader = new ArrayList<String>(students.size());
while(assignedStudents < studentsSize)
{
int i = 0;
while(i < studentToGrader)
{
studToGrader.add(students.get(assignedStudents) + "--" + graders.get(i));
assignedStudents++;
i++;
}
}
return studToGrader;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.