私は教室のリストと学生グループのリストを持っています。各クラスルームはx人の生徒しか受け入れられません。私は学生グループごとに最高の教室を見つけたいと思っています。リストの一番近い番号を見つけよう
次の例があります。
List<Classroom> classRooms = new ArrayList<>();
classRooms .add(new Classroom("Lecture Room 1", 40));
classRooms .add(new Classroom("Lecture Room 2", 32));
classRooms .add(new Classroom("Lecture Room 3", 80));
classRooms .add(new Classroom("Lecture Room 4", 50));
classRooms .add(new Classroom("Lecture Room 5", 26));
教室クラスは(classroomname、maxCapicity) のコンストラクタを持つ基本であるグループは教室が利用可能であるべきではない教室に割り当てられている場合、私は学生グループ
List<StudentGroup> studentGroups= new ArrayList<>();
studentGroups.add(new StudentGroup("Group 1", 70));
studentGroups.add(new StudentGroup("Group 2", 40));
studentGroups .add(new StudentGroup("Group 3", 10));
studentGroups.add(new StudentGroup("Group 4", 45));
のリストを持っていますもう(groupname、totalStudents)
私はこのMost efficient way to find the nearest number in a listを見ましたが、私は整数のリスト(教室サイズ)を使用せず、リストからそれぞれの時間を削除することをお勧めします。より良い選択肢がありますか?
ありがとうございます。
編集これを試しました。しかし、これが最良の結果をもたらすとは思わない。
Collections.sort(courseList, (a, b) -> a.getStudentCount().compareTo(b.getStudentCount()));
Collections.sort(classList, (a, b) -> a.getMaxStudente().compareTo(b.getMaxStudente()));
// more course than classes
if (courseList.size() > classList.size()) {
} else { // more clases than courses
for (int i = 0; i < courseList.size(); i++) {
courseList.get(i).setDedicatedKlas(classList.get(i + 1));
}
}
その後、我々は唯一の45で一つのグループと選択するどのような能力50と100との2つだけの部屋は持っています、50または100?私の意見では、将来的には75の別のグループがあるかもしれないので、50を選ぶほうが良いです。アルゴリズムが50だけでなく100も取ることができるならば、違いがあります。 –
私の意見はこの場合50を使うことです。クラスとグループのサイズはいつでも変更できます。あなたは正しいです。最も近いが小さいものを選択するアルゴリズムはありますか?maxSize –