Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions practice/quiz1/RunQuiz.java
Original file line number Diff line number Diff line change
@@ -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<Student> students = createStudents();

ArrayList<Student> boys = new ArrayList<Student>();
ArrayList<Student> girls = new ArrayList<Student>();

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<Student> newStudents = new ArrayList<Student>(girls);

newStudents.sort(new StudentComparator(SortType.GENDER, SortOrder.ASC).create());

printResult(newStudents);
}

public ArrayList<Student> createStudents() {
ArrayList<Student> students = new ArrayList<Student>();

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<Student> students) {
for(Student student: students) {
System.out.println("최종 : "+student.toString());
}
}
}
44 changes: 44 additions & 0 deletions practice/quiz1/Student.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
61 changes: 61 additions & 0 deletions practice/quiz1/StudentComparator.java
Original file line number Diff line number Diff line change
@@ -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<Student> create() {
Comparator<Student> 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<Student> {
@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<Student> {
@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<Student> {
@Override
public int compare(Student a,Student b){
if(a.getStudentId() > b.getStudentId()) return 1;
if(a.getStudentId() < b.getStudentId()) return -1;
return 0;
}
}
}
6 changes: 6 additions & 0 deletions practice/quiz1/enums/Gender.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package quiz1.enums;

public enum Gender {
MAN,
WOMAN,
}
6 changes: 6 additions & 0 deletions practice/quiz1/enums/SortOrder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package quiz1.enums;

public enum SortOrder {
ASC,
DESC,
}
7 changes: 7 additions & 0 deletions practice/quiz1/enums/SortType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package quiz1.enums;

public enum SortType {
GENDER,
HEIGHT,
STUDENT_ID,
}