Ex82 ~ Ex83
์ต๋ช
๊ฐ์ฒด, Anonymous Object
- ์ต๋ช
ํด๋์ค, Anonymous Class
- ์ด๋ฆ์ด ์๋ ํด๋์ค
- ๋ฐ๋์ ์ธํฐํ์ด์ค๊ฐ ํ์ํ๋ค.(์๋ฐ ํน์ฑ)
์ค๋ช
ํด๋์ค
1. ๊ฐ์ฒด๋ฅผ N๊ฐ ๋ง๋ค ์ ์๋ค.
- ํด๋์ค ์ ์ธ > ๊ฐ์ฒด ์์ฑ
์ต๋ช
ํด๋์ค
1. ๊ฐ์ฒด๋ฅผ ๋ฑ 1๊ฐ ๋ง๋ค ์ ์๋ค.
- ํด๋์ค ์ ์ธ + ๊ฐ์ฒด ์์ฑ
ํ๋ก์ ํธ
- ํด๋์ค ๊ฐ์ + ๋ง์ > ์๋ฐฑ๊ฐ~์์ฒ๊ฐ ์ด์
- ์ด๋ฆ ์ง๊ธฐ.. > ์์ด + ์๋ฏธ
//์๊ตฌ์ฌํญ] ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค ์ ์ธํ๊ธฐ > ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ(๋ชฉ์ )
//1. ๋ณธ์ธ ํ์
์ ์ฐธ์กฐ ๋ณ์
BB o1 = new BB();
o1.aaa();
//2. ๋ถ๋ชจ ํ์
์ ์ฐธ์กฐ ๋ณ์
AA o2 = new BB(); //์
์บ์คํ
(๋ถ๋ชจ๊ฐ ์ธํฐํ์ด์ค์ผ ๊ฒฝ์ฐ ์
์บ์คํ
ํํ๊ฒํจ)
o2.aaa();
//3. ์ถ์ ํด๋์ค, ์ธํฐํ์ด์ค > ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. > ์ถ์ ๋ฉ์๋ ๋๋ฌธ์..
//Cannot instantiate the type AA
//AA o3 = new AA();
//o3.aaa();
//์ต๋ช
ํด๋์ค > ์ต๋ช
๊ฐ์ฒด(์ ์ธ๊ณผ ๋์์ ๊ฐ์ฒด๊ฐ ์์ฑ๋จ)
//AA๋ฅผ ์์๋ฐ๋ ์ด๋ฆ ์๋ ํด๋์ค ์ ์ธ์ค(= BB ํด๋์ค์ ๋์ผํ ๋ฌธ๋ฒ)
//์ธํฐํ์ด์ค์ ์ด๋ฆ์๋ ํด๋์ค๋ฅผ ๋ถ๋ชจ&์์์ผ๋ก ๋ง๋ค์(์
์บ์คํ
)
//The type new AA(){} must implement the inherited abstract method AA.aaa()
AA o4 = new AA() {
@Override
public void aaa() {
System.out.println("์ถ์ ๋ฉ์๋ ๊ตฌํ2");
}
};
o4.aaa();
AA o5 = new AA() {
@Override
public void aaa() {
System.out.println("์ถ์ ๋ฉ์๋ ๊ตฌํ2");
}
};
o5.aaa();
}//main
}//main class
interface AA {
void aaa();
}
class BB implements AA {
@Override
public void aaa() {
System.out.println("์ถ์ ๋ฉ์๋ ๊ตฌํ");
}
}
Sort
package com.test.obj.type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class Ex83_Sort {
public static void main(String[] args) {
//m1();
//m2();
//m3();
//m4();
//m5();
//m6();
m7();
}//main
private static void m7() {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(5);
nums.add(4);
nums.add(2);
nums.add(1);
nums.add(3);
Collections.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(nums);
nums.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return 0;
}
});
}
private static void m6() {
Student[] list = new Student[5];
list[0] = new Student("๊ฐ๊ฐ๊ฐ", 100, 90, 80);
list[1] = new Student("๋๋๋", 99, 98, 88);
list[2] = new Student("๋ค๋ค๋ค", 87, 89, 79);
list[3] = new Student("๋ผ๋ผ๋ผ", 65, 67, 87);
list[4] = new Student("๋ง๋ง๋ง", 76, 79, 68);
Arrays.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//๊ตญ์ด์ฑ์ ์ค๋ฆ์ฐจ์
//return o1.getKor() - o2.getKor();
//์ ์ฒด์ฑ์ ๋ด๋ฆผ์ฐจ์
return (o2.getKor() + o2.getEng() + o2.getMath()) - (o1.getKor() + o1.getEng() + o1.getMath());
}
});
System.out.println(Arrays.toString(list));
}
private static void m5() {
String[] names = { "ํ๊ธธ๋", "์๋ฌด๊ฐ", "ํํํ", "๊ฐ๊ฐ๊ฐ", "๋๋๋", "๊น๋ฏผ", "๋จ๊ถ์ฌ๋ฏผ" };
//๊ฐ๋๋ค์ > ์ค๋ฆ์ฐจ์
Arrays.sort(names);
System.out.println(Arrays.toString(names));
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//๋ด๋ฆผ์ฐจ์
return o2.compareTo(o1); //String๋ผ๋ฆฌ ๋น๊ต. o1 o2 ๋ฐ๊พธ๋ฉด ์ค๋ฆ์ฐจ์
}
});
System.out.println(Arrays.toString(names));
//๊ธ์์ ์์ผ๋ก..
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
System.out.println(Arrays.toString(names));
}
private static void m4() {
Integer[] nums = { 1, 5, 4, 2, 3 };
//๊ฐ์ฒด ์์ฑ์ ๋งค๊ฐ๋ณ์ ์์น์์(๊ฐ์ฅ ๋ง์ด ์ฐ๋ ํ์.. ์ต์ํด์ง๊ฒ)
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(Arrays.toString(nums));
}
private static void m3() {
Integer[] nums = { 1, 5, 4, 2, 3 };
//Comparator๋ ์ธํฐํ์ด์ค
//์ต๋ช
ํด๋์ค > ์ต๋ช
๊ฐ์ฒด
//๋ฐ์์ ๋ง๋ MyComparator๋ ๋๊ฐ์(์ฐจ์ด๋ ์ด๋ฆ์ or ์)
Comparator<Integer> my = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
//๋ด๋ฆผ์ฐจ์
return o2 - o1;
}
};
Arrays.sort(nums, my);
System.out.println(Arrays.toString(nums));
}
private static void m2() {
Integer[] nums = { 1, 5, 4, 2, 3 };
//Arrays.sort(nums);
//System.out.println(Arrays.toString(nums));
MyComparator my = new MyComparator();
Arrays.sort(nums, my);
System.out.println(Arrays.toString(nums));
}
private static void m1() {
int[] nums = { 1, 5, 3, 4, 2 };
System.out.println(Arrays.toString(nums));
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
System.out.println();
ArrayList<Integer> nums2 = new ArrayList<Integer>();
nums2.add(1);
nums2.add(5);
nums2.add(3);
nums2.add(4);
nums2.add(2);
System.out.println(nums2);
Collections.sort(nums2); //ArrayList์ ์ ๋ ฌ
System.out.println(nums2);
System.out.println();
Student[] list = new Student[5];
list[0] = new Student("๊ฐ๊ฐ๊ฐ", 100, 90, 80);
list[1] = new Student("๋๋๋", 99, 98, 88);
list[2] = new Student("๋ค๋ค๋ค", 87, 89, 79);
list[3] = new Student("๋ผ๋ผ๋ผ", 65, 67, 87);
list[4] = new Student("๋ง๋ง๋ง", 76, 79, 68);
//java.lang.ClassCastException: class com.test.obj.type.Student cannot be cast to class java.lang.Comparable
//๋ญ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋์ง ๊ธฐ์ค ์์
//Arrays.sort(list);
//๋ฃจํ ์ธ์ฐ๊ธฐ
for (int i=0; i<list.length-1; i++) {
for (int j=0; j<list.length-1-i; j++) {
//๊ตญ์ด์ ์ ๋ฎ>๋ ์์ผ๋ก ์ ๋ ฌ
if (list[j].getKor() > list[j+1].getKor()) {
//์ด์ ๋์ ๊ธฐ์ค
//if ((list[j].getKor() + list[j].getEng() + list[j].getMath()) < (list[j+1].getKor() + list[j+1].getEng() + list[j+1].getMath())) {
Student temp = list[j];
list[j] = list[j+1];
list[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(list));
}//m1
}
class Student {
//์์๋ ์์ง๋ง ๋ณดํต ๊ฐ์ฒด, ์์ฑ์, getset, toString ์์ผ๋ก ์์ฑ
private String name;
private int kor;
private int eng;
private int math;
public Student(String name, int kor, int eng, int math) {
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
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 getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
@Override
public String toString() {
return "Student [name=" + name + ", kor=" + kor + ", eng=" + eng + ", math=" + math + "]";
}
}
//์ ๋ ฌํ ๋ฐฐ์ด์(nums) ๋ณ์๊ฐ Integer
class MyComparator implements Comparator<Integer> {
//์ ๋ ฌํ ๋ ๋น๊ต ๋ด๋นํ๋ ๋ฉ์๋
//o1 vs o2
//- ์ค๋ฆ์ฐจ์
// - o1 ํฌ๋ฉด > ์์ ๋ฐํ
// - o2 ํฌ๋ฉด > ์์ ๋ฐํ
// - ๊ฐ์ผ๋ฉด > 0 ๋ฐํ
//- ๋ด๋ฆผ์ฐจ์
// - o1 ํฌ๋ฉด > ์์ ๋ฐํ
// - o2 ํฌ๋ฉด > ์ผ์ ๋ฐํ
// - ๊ฐ์ผ๋ฉด > 0 ๋ฐํ
@Override
public int compare(Integer o1, Integer o2) { //list[j], list[j+1]
// if (o1 > o2) {
// return 1;
// } else if (o1 < o1) {
// return -1;
// } else {
// return 0;
// }
//o1์ด ํฌ๋ฉด ์์, o2๊ฐ ํฌ๋ฉด ์์, ๋๊ฐ์ผ๋ฉด 0.. > ์์ ๋๊ฐ์
return o1 - o2;
//๋ด๋ฆผ์ฐจ์
//return o2 - o1;
}
}
'ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๋ค์(Lambda Expression) (0) | 2023.03.14 |
---|---|
LinkedList, TreeSet, TreeMap (0) | 2023.03.14 |
[18์ผ์ฐจ] File (1), ์ฌ๊ท ๋ฉ์๋ (0) | 2023.03.05 |
[18์ผ์ฐจ] HashMap, HashSet (0) | 2023.03.05 |
[17์ผ์ฐจ] ์ปฌ๋ ์ - ArrayList, Stack, Queue (0) | 2023.03.04 |