diff --git a/practice/quiz1/RunQuiz.java b/practice/quiz1/RunQuiz.java new file mode 100644 index 000000000..b76e7a668 --- /dev/null +++ b/practice/quiz1/RunQuiz.java @@ -0,0 +1,74 @@ +package quiz1; + +import quiz1.enums.*; + +import java.util.ArrayList; + +public class RunQuiz { + + public static void main(String[] args) { + RunQuiz runQuiz = new RunQuiz(); + runQuiz.runSort(); + } + + public void runSort() { + ArrayList students = createStudents(); + + ArrayList boys = new ArrayList(); + ArrayList girls = new ArrayList(); + + for(Student student: students) { + if(student.getGender() == Gender.MAN) { + boys.add(student); + } else { + girls.add(student); + } + } + + boys.sort(new StudentComparator(SortType.HEIGHT, SortOrder.ASC).create()); + + girls.sort(new StudentComparator(SortType.STUDENT_ID, SortOrder.ASC).create()); + + girls.addAll(boys); + + ArrayList newStudents = new ArrayList(girls); + + newStudents.sort(new StudentComparator(SortType.GENDER, SortOrder.ASC).create()); + + printResult(newStudents); + } + + public ArrayList createStudents() { + ArrayList students = new ArrayList(); + + Student student1 = new Student(1, Gender.WOMAN, 140); + Student student2 = new Student(2, Gender.MAN, 184); + Student student3 = new Student(3, Gender.MAN, 183); + Student student4 = new Student(4, Gender.WOMAN, 122); + Student student5 = new Student(5, Gender.WOMAN, 120); + Student student6 = new Student(6, Gender.MAN, 129); + Student student7 = new Student(7, Gender.WOMAN, 180); + Student student8 = new Student(8, Gender.MAN, 183); + Student student9 = new Student(9, Gender.WOMAN, 155); + Student student10 = new Student(10, Gender.WOMAN, 165); + + students.add(student1); + students.add(student10); + students.add(student8); + students.add(student9); + students.add(student3); + students.add(student5); + students.add(student4); + students.add(student2); + students.add(student7); + students.add(student6); + + return students; + } + + public void printResult(ArrayList students) { + for(Student student: students) { + System.out.println("최종 : "+student.toString()); + } + } +} diff --git a/practice/quiz1/Student.java b/practice/quiz1/Student.java new file mode 100644 index 000000000..5a224960b --- /dev/null +++ b/practice/quiz1/Student.java @@ -0,0 +1,44 @@ +package quiz1; + +import quiz1.enums.Gender; + +public class Student { + private int studentId; + private Gender gender; + private double height; + + Student(int studentId, Gender gender, double height) { + this.studentId = studentId; + this.gender = gender; + this.height = height; + } + + @Override + public String toString() { + return "{ studentId : "+ this.studentId + ", gender : " + this.gender + ", height : "+ this.height +" }"; + } + + public int getStudentId() { + return studentId; + } + + public void setStudentId(int studentId) { + this.studentId = studentId; + } + + public Gender getGender() { + return gender; + } + + public void setGender(Gender gender) { + this.gender = gender; + } + + public double getHeight() { + return height; + } + + public void setHeight(double height) { + this.height = height; + } +} diff --git a/practice/quiz1/StudentComparator.java b/practice/quiz1/StudentComparator.java new file mode 100644 index 000000000..d00a42b42 --- /dev/null +++ b/practice/quiz1/StudentComparator.java @@ -0,0 +1,61 @@ +package quiz1; + +import quiz1.enums.SortOrder; +import quiz1.enums.SortType; + +import java.util.Comparator; + +public class StudentComparator { + private SortType sortType; + private SortOrder sortOrder; + + StudentComparator(SortType sortType, SortOrder sortOrder) { + this.sortType = sortType; + this.sortOrder = sortOrder; + } + + public Comparator create() { + Comparator comparator = null; + + if(this.sortType == SortType.HEIGHT && this.sortOrder == SortOrder.ASC) { + return new HeightASCComparator(); + } + + if(this.sortType == SortType.STUDENT_ID && this.sortOrder == SortOrder.ASC) { + return new StudentIdASCComparator(); + } + + if(this.sortType == SortType.GENDER && this.sortOrder == SortOrder.ASC) { + return new GenderASCComparator(); + } + + return comparator; + } + + class GenderASCComparator implements Comparator { + @Override + public int compare(Student a,Student b) { + if(a.getGender().ordinal() > b.getGender().ordinal()) return 1; + if(a.getGender().ordinal() < b.getGender().ordinal()) return -1; + return 0; + } + } + + class HeightASCComparator implements Comparator { + @Override + public int compare(Student a,Student b){ + if(a.getHeight() > b.getHeight()) return 1; + if(a.getHeight() < b.getHeight()) return -1; + return 0; + } + } + + class StudentIdASCComparator implements Comparator { + @Override + public int compare(Student a,Student b){ + if(a.getStudentId() > b.getStudentId()) return 1; + if(a.getStudentId() < b.getStudentId()) return -1; + return 0; + } + } +} diff --git a/practice/quiz1/enums/Gender.java b/practice/quiz1/enums/Gender.java new file mode 100644 index 000000000..1bce4ce97 --- /dev/null +++ b/practice/quiz1/enums/Gender.java @@ -0,0 +1,6 @@ +package quiz1.enums; + +public enum Gender { + MAN, + WOMAN, +} diff --git a/practice/quiz1/enums/SortOrder.java b/practice/quiz1/enums/SortOrder.java new file mode 100644 index 000000000..480b6592c --- /dev/null +++ b/practice/quiz1/enums/SortOrder.java @@ -0,0 +1,6 @@ +package quiz1.enums; + +public enum SortOrder { + ASC, + DESC, +} diff --git a/practice/quiz1/enums/SortType.java b/practice/quiz1/enums/SortType.java new file mode 100644 index 000000000..806865f27 --- /dev/null +++ b/practice/quiz1/enums/SortType.java @@ -0,0 +1,7 @@ +package quiz1.enums; + +public enum SortType { + GENDER, + HEIGHT, + STUDENT_ID, +}