interface AAA {
void aaa();
}
class BBB implements AAA {
@Override
public void aaa() {
System.out.println("aaa");
}
}
public class Ex66_Anonymous {
public static void main(String[] args) {
//1. 본입 타입으로 참조 변수 만들기
BBB b1 = new BBB();
b1.aaa();
System.out.println();
//2. 부모 타입(인터페이스)으로 참조 변수 만들기
AAA b2 = new BBB();
b2.aaa();
System.out.println();
}
}
public class Ex66_Anonymous {
public static void main(String[] args) {
AAA b3 = new AAA() {
@Override
public void aaa() {
System.out.println("aaa");
}
};
b3.aaa();
}
}
Integer[] nums = {1, 5, 2, 4, 3};
System.out.println("Integer 배열 nums 요소 출력:");
System.out.println(Arrays.toString(nums));
//오름차순 정렬(Quick Sort > JDK 제공 기능)
Arrays.sort(nums);
System.out.println("오름차순한 nums 요소 출력:");
System.out.println(Arrays.toString(nums));
//Double형 내림차순
Double[] nums2 = {3.1, 7.1, 3.8, 9.2, 8.9};
//자료형이 달라지면 매번 새로운 클래스를 만들어야하므로 익명클래스로 1회성 클래스를 만들어준다.
Arrays.sort(nums2, new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
//if (o1 < o2) {
// return 1;
//} else if (o1>o2) {
// return -1;
//} else {
// return 0;
//}
//위 코드를 간결하게 작성
return (int)((o2-o1)*10);
}
});
System.out.println("Double 배열 nums2 요소 내림차순 출력:");
System.out.println(Arrays.toString(nums2));
Integer 배열 nums 요소 출력:
[1, 5, 2, 4, 3]
오름차순한 nums 요소 출력:
[1, 2, 3, 4, 5]
Double 배열 nums2 요소 내림차순 출력:
[9.2, 8.9, 7.1, 3.8, 3.1]
String txt1 = "홍길동";
String txt2 = "홍무개";
//참조형은 주소값을 담고 있고, 주소값들은 연산이 될 수 없으므로 비교가 불가능하다.
//문자 대 문자 비교 가능 : 문자는 문자코드이기때문에
System.out.println('a'<'b'); //true
//문자열 정렬
String[] names = {"홍길동","아무개","유재석","박명수","이순신", "훈", "김철"};
//가다나순으로 정렬(오름차순)
System.out.println(Arrays.toString(names));
System.out.println("오름차순");
Arrays.sort(names);
System.out.println(Arrays.toString(names));
//내림차순
System.out.println("내림차순 + 글자수 비교");
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//정렬 조건이 1개 일 때
//return o2.compareTo(o1); //가나다 정렬 : 문자 코드값 비교
//return o1.length() - o2.length(); //글자수 비교
//정렬 조건 2개 : 글자수, 가나다 오름차순 정렬
if (o1.length() > o2.length() ) {
return 1;
} else if (o1.length() < o2.length()) {
return -1;
} else {
//2차 정렬 기준
return o1.compareTo(o2);
}
}
});
System.out.println(Arrays.toString(names));```
true
[홍길동, 아무개, 유재석, 박명수, 이순신, 훈, 김철]
오름차순
[김철, 박명수, 아무개, 유재석, 이순신, 홍길동, 훈]
내림차순 + 글자수 비교
[훈, 김철, 박명수, 아무개, 유재석, 이순신, 홍길동]
Calendar[] dates = new Calendar[5];
for (int i=0; i<dates.length; i++) {
dates[i] = Calendar.getInstance();
}
dates[0].add(Calendar.DATE, 7);
dates[1].add(Calendar.DATE, -2);
dates[2].add(Calendar.DATE, 1);
dates[3].add(Calendar.DATE, 0);
dates[4].add(Calendar.DATE, 3);
System.out.println("dates 출력");
for (int i=0; i<dates.length; i++) {
System.out.printf("%tF\n", dates[i]);
}
System.out.println();
//오름차순 정렬
Arrays.sort(dates);
System.out.println("dates 오름차순 출력");
for (int i=0; i<dates.length; i++) {
System.out.printf("%tF\n", dates[i]);
}
System.out.println();
//내림차순 정렬
System.out.println("dates 내림차순 출력");
Arrays.sort(dates, new Comparator<Calendar>() {
@Override
public int compare(Calendar o1, Calendar o2) {
//return (int)(o2.getTimeInMillis() - o1.getTimeInMillis());
//getTimeInMillis 가 long타입이기에 연산할 때 위험하다.
//차이가 너무 많이 나면 연산 결과가 음수가 아닌 양수가 나올 수 있다.
return o2.compareTo(o1);
}
});
for (int i=0; i<dates.length; i++) {
System.out.printf("%tF %tA\n", dates[i], dates[i], dates[i]);
}
System.out.println();
System.out.println("dates 요일 내림차순 출력");
Arrays.sort(dates, new Comparator<Calendar>() {
@Override
public int compare(Calendar o1, Calendar o2) {
//return (int)(o2.getTimeInMillis() - o1.getTimeInMillis()); //getTimeInMillis 가 long타입이기에 연산할 때 위험하다.
//차이가 너무 많이 나면 연산 결과가 음수가 아닌 양수가 나올 수 있다.
//return o2.compareTo(o1);
//요일로 정렬
//일(1) ~ 토(7)
return o1.get(Calendar.DAY_OF_WEEK) - o2.get(Calendar.DAY_OF_WEEK);
}
});
for (int i=0; i<dates.length; i++) {
System.out.printf("%tF %tA\n", dates[i], dates[i], dates[i]);
}
System.out.println();
dates 출력
2023-08-23
2023-08-14
2023-08-17
2023-08-16
2023-08-19
dates 오름차순 출력
2023-08-14
2023-08-16
2023-08-17
2023-08-19
2023-08-23
dates 내림차순 출력
2023-08-23 수요일
2023-08-19 토요일
2023-08-17 목요일
2023-08-16 수요일
2023-08-14 월요일
dates 요일 내림차순 출력
2023-08-14 월요일
2023-08-23 수요일
2023-08-16 수요일
2023-08-17 목요일
2023-08-19 토요일
Score[] list = new Score[5];
list[0] = new Score("홍길동", 100, 90, 80);
list[1] = new Score("아무개", 10, 22, 18);
list[2] = new Score("유재석", 78, 95, 79);
list[3] = new Score("박명수", 56, 78, 76);
list[4] = new Score("이순신", 99, 67, 79);
System.out.println(Arrays.toString(list));
System.out.println();
//이름순으로 정렬
//Arrays.sort(list); //복합데이터의 정렬 기준이 없어 정렬 불가
//이름순으로 정렬
System.out.println("이름순으로 정렬");
Arrays.sort(list, new Comparator<Score>() {
@Override
public int compare(Score o1, Score o2) {
return o1.getName().compareTo(o2.getName());
}
});
System.out.println(Arrays.toString(list));
//총점 순으로 정렬
System.out.println("총점순으로 정렬");
Arrays.sort(list, new Comparator<Score>() {
@Override
public int com_텍스트_pare(Score o1, Score o2) {
return (o2.getKor()+o2.getEng()+o2.getMath()) - (o1.getKor() + o1.getEng() + o1.getMath());
}
});
System.out.println(Arrays.toString(list));
[Score [name=홍길동, kor=100, eng=90, math=80]
, Score [name=아무개, kor=10, eng=22, math=18]
, Score [name=유재석, kor=78, eng=95, math=79]
, Score [name=박명수, kor=56, eng=78, math=76]
, Score [name=이순신, kor=99, eng=67, math=79]
]
이름순으로 정렬
[Score [name=박명수, kor=56, eng=78, math=76]
, Score [name=아무개, kor=10, eng=22, math=18]
, Score [name=유재석, kor=78, eng=95, math=79]
, Score [name=이순신, kor=99, eng=67, math=79]
, Score [name=홍길동, kor=100, eng=90, math=80]
]
총점순으로 정렬
[Score [name=홍길동, kor=100, eng=90, math=80]
, Score [name=유재석, kor=78, eng=95, math=79]
, Score [name=이순신, kor=99, eng=67, math=79]
, Score [name=박명수, kor=56, eng=78, math=76]
, Score [name=아무개, kor=10, eng=22, math=18]
]
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i=0; i<10; i++) {
list.add((int)(Math.random()*100)); //0~99 난수
}
System.out.println(list);
//오름차순
//Collections클래스에서 sort() 사용 가능하다.
Collections.sort(list);
System.out.println("오름차순");
System.out.println(list);
//내림차순
//1. Collections 클래스 sort 사용
// Collections.sort(list, new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// return o2-o1;
// }
//
// });
//2.
System.out.println("내림차순");
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.println(list);
[5, 76, 17, 96, 92, 18, 11, 80, 4, 52]
오름차순
[4, 5, 11, 17, 18, 52, 76, 80, 92, 96]
내림차순
[96, 92, 80, 76, 52, 18, 17, 11, 5, 4]