01 배열 정렬
1. 오름차순 정렬
- 가나다... ABC... 순
- 오름차순 정렬이 default
- java.util 패키지 > Arrays 클래스 > parallel ~ 메소드 (static)
package com.test;
import java.util.Arrays;
public class ArraySort {
public static void main(String[] args) {
String [] name = {"A", "C", "B", "F", "G", "Z", "H", "J"};
for(String k : name) {
System.out.print(k + " ");
}
System.out.println();
System.out.println("=======오름차순 정렬=======");
//오름차순
Arrays.parallelSort(name);
for(String k : name) {
System.out.print(k + " ");
}
}
}
[결과화면]
2. 내림차순 정렬
- 하타파... ZYXW... 순
- java.util 패키지 > Collections 클래스 > reverseOrder() 메소드 (static)
package com.test;
import java.util.Arrays;
import java.util.Collections;
public class ArraySort {
public static void main(String[] args) {
String [] name = {"A", "C", "B", "F", "G", "Z", "H", "J"};
for(String k : name) {
System.out.print(k + " ");
}
System.out.println();
System.out.println("=======내림차순 정렬=======");
//내림차순
Arrays.sort(name, Collections.reverseOrder());
for(String k : name) {
System.out.print(k + " ");
}
}
}
[결과화면]
02 Compare 클래스 정렬
1. Compare<T>
- java.lang 패키지 > Compare<T> 인터페이스 > compareTo 추상메소드
2. 오름차순 정렬 (이름)
package com.sort;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
class Data implements Comparable<Data>{
String name;
int score;
public Data(String name, int score) {
super();
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int compareTo(Data t) {
return name.compareTo(t.name);
}
}
public class Sample {
public static void main(String[] args) throws FileNotFoundException {
ArrayList<Data> alist = new ArrayList<Data>();
FileReader fr = new FileReader("c:/java_test/score.txt");
BufferedReader br = new BufferedReader(fr);
while(true) {
try {
String str = br.readLine();
if(str==null)
break;
String name=str.substring(0,3);
int score=Integer.parseInt(str.substring(3));
alist.add(new Data(name, score));
} catch (IOException e) {
e.printStackTrace();
}
}
Collections.sort(alist);
System.out.println("이름\t점수\t");
for(Data k : alist) {
System.out.println(k.getName() + "\t" + k.getScore());
}
}
}
① 10행: Comparable<T>에서 T에 클래스 사용 가능
② 36행: Comparable는 인터페이스로 추상메소드만 가지고 있기 때문에 Override 필수
③ 38행: 순서대로 name의 데이터들을 가져와 하나씩 비교 후 위치를 바꿔 정렬
① 45행: ArrayList, FileReader, BufferedReader 사용법
[결과화면]
3. 내림차순 정렬 (이름)
@Override
public int compareTo(Data t) {
return t.name.compareTo(name);
}
① Override한 부분만 수정 (name.compareTo(t.name) -> t.name.compareTo(name))
[결과화면]
4. 오름차순 정렬 (점수)
@Override
public int compareTo(Data t) {
if(score < t.score)
return -1;
return 0;
}
[결과화면]
5. 내림차순 정렬 (점수)
@Override
public int compareTo(Data t) {
if(score > t.score)
return -1;
return 0;
}
[결과화면]
03 익명 클래스
- 추상 메소드를 한번만 사용할 경우 익명 클래스 사용 > 상속을 안해도 괜찮음
package com.test;
abstract class Sample{
abstract void out();
}
public class Anonymous {
public static void main(String[] args) {
Sample ss = new Sample() {
@Override
void out() {
System.out.println("익명 클래스");
}
};
ss.out();
}
}
Sample이라는 추상클래스
Anonymous 클래스
① 3행: 추상 클래스를 상속받아야만 Anonymus에서 객체를 만들어 사용할 수 있음
② 10행: 하지만 "실행을 한번만 시킬 경우" 상속을 하지 않아도 추상 클래스에서 객체를 만들어 오버라이딩 가능
* 추상 클래스는 객체를 만들지 못한다? > new를 이용해 객체를 만들기 어려울 뿐 만들 수 있음
[결과화면]
'STUDY > Java' 카테고리의 다른 글
[JAVA] Thread, 스레드 (0) | 2021.11.05 |
---|---|
[JAVA] 예외처리 (0) | 2021.11.05 |
[JAVA] 데이터 타입 - 기본타입, 참조타입 (0) | 2021.11.05 |
[JAVA] 추상 클래스, 인터페이스 (0) | 2021.11.05 |
[JAVA] 상속과 다형성 (0) | 2021.11.05 |