반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ObjectInputStream
- include지시자
- 상관 서브 쿼리
- InputDialog
- MemoryStream
- interrupted()
- ID중복
- String char[] 형변환
- include 지시자
- Linux세팅
- 리눅스세팅
- StringReader
- 리눅스셋팅
- Daemon()
- isinterrupted()
- 메모리스트림
- char[] String 형변환
- interrupt()
- Linux셋팅
- 상관서브쿼리
- 표현 언어
- first-of-child
- 아이디중복
- first-child
- sleep()메소드
- StringWriter
- ThreadGroup()
- include액션태그
- 동기화
- 스레드그룸
Archives
- Today
- Total
다연이네
[문제] 열거형 활용 예제 본문
반응형
[문제] 학생 데이터를 학번, 이름, 성적 기준으로 오름차순으로 정렬하라
package days24;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
public class Ex09 {
public static void main(String[] args) {
ArrayList<Student2> list =new ArrayList<Student2>(30); //30명
list.add(new Student2(1, "문소민", 90, 89, 78, 257, 85.66, 2));
list.add(new Student2(2, "함치영", 80, 89, 78, 247, 82.66, 3));
list.add(new Student2(3, "성태석", 90, 99, 78, 267, 88.66, 1));
//1을 집어넣으면 tot로 정렬
//2을 집어넣으면 name으로 정렬
//3을 집어넣으면 no로 정렬
//list.sort(new StudentComparator(3)); //주석 없으면 무슨 코딩인지 모른다
//3의의미? 코드 분석하지 않는이상 모름 => 표준화를 위해 enum을 사용
list.sort(new StudentComparator(StudentSortOption.SCORE));
//열거형 쓰니 NAME을 주겠다는 것을 명확히 알 수 있다
//i와 열겨형 자료형 => 가독성이 완전히 다름
System.out.println("> 모든 학생 정보 출력 <");
Iterator<Student2> ir = list.iterator();
while (ir.hasNext()) {
Student2 s = ir.next();
System.out.println(s);
}
}//
}//
//열거형 선언
enum StudentSortOption{SCORE, NAME, NO}
class StudentComparator implements Comparator<Student2>{
int i; //지역변수 생성하고 2
public StudentComparator(int i) { //i는 지역변수
this.i =i; // 여기서 i받은거 지역변수로 넘겨주기 ***** 3
}
private StudentSortOption sortOption; //지역변수 i처럼 밖에 선언해주기
public StudentComparator(StudentSortOption sortOption) {
this.sortOption =sortOption;
}
@Override
public int compare(Student2 o1, Student2 o2) { //이 메소드에서도 i를 사용하고싶다면 1
/* if(i==1) {
return Integer.compare(o1.getTot(),o2.getTot());
}else if(i==2) {
return o1.getName().compareTo(o2.getName());
//문자열끼리 비교=> 문자열.compareTo 같으면0 다르면 양수 음수
}else //if(i==3)
{
return Integer.compare(o1.getNo(),o2.getNo());
}
*/
//열거형 사용시
switch (this.sortOption) {
case NAME:
return o1.getName().compareTo(o2.getName());
case SCORE:
return Integer.compare(o1.getTot(),o2.getTot());
case NO:
return Integer.compare(o1.getNo(),o2.getNo());
default: return Integer.compare(o1.getNo(),o2.getNo());
}
}
}
class Student2 implements Comparable<Student2>{ //<Student2> 주면 학생들끼리 비교하겠다는 뜻
// fields
private int no;
private String name;
private int kor, eng, mat;
private int tot;
private double avg;
private int rank;
// constructors
public Student2() {
super();
}
public Student2(int no, String name, int kor, int eng, int mat, int tot, double avg, int rank) {
super();
this.no = no;
this.name = name;
this.kor = kor;
this.eng = eng;
this.mat = mat;
this.tot = tot;
this.avg = avg;
this.rank = rank;
}
// getter , setter
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
@Override
public String toString() {
return String.format(
"[%d] %s\t%d\t%d\t%d\t%d\t%.2f\t%d",
no, name, kor, eng,mat,tot, avg, rank );
}
@Override
public int compareTo(Student2 o) { //제네릭을 사용하는 이유 : Object가 아니라 Student2로 됨
return Integer.compare(this.no, o.no);
}
}
반응형
'Java' 카테고리의 다른 글
[days24] 자바 입출력(I/O) 이론 개념 (0) | 2020.10.23 |
---|---|
[days24] Annotation (0) | 2020.10.23 |
[days24] 열거형(enums) (0) | 2020.10.23 |
[days24] Generics (0) | 2020.10.23 |
[days23] 컬렉션 클래스 - Properties (0) | 2020.10.21 |
Comments