๋ฐ˜์‘ํ˜•
JuneBee
JuneBee
JuneBee
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (102)
    • ๐Ÿ‘” JOB (10)
      • ์ „ํ˜• ํ›„๊ธฐ (10)
    • ๐ŸŽฎ GAME (9)
      • ์ ค๋‹ค | ์™•๊ตญ์˜ ๋ˆˆ๋ฌผ ๊ฒŒ์ž„ ์ผ๊ธฐ (9)
    • ๐Ÿ““ STUDY (60)
      • JAVA (15)
      • TIL (2)
      • FASTCAMPUS (32)
      • ํ™˜๊ฒฝ์„ค์ • (2)
      • YOCTO (1)
      • OS (4)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์ธ ์•ก์…˜ (2)
    • ๐ŸŽงDAILY (6)
    • ๐Ÿ‡ฉ๐Ÿ‡ช GERMAN (17)
      • ๋Œ€ํ•™์› ์ง€์› (3)
      • ์ง€์› ํ›„๊ธฐ (11)
      • ๋…์ผ์–ด ์‹œํ—˜ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ผ์ƒ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์œ ํ•™
  • ํŒจ์ŠคํŠธ์บ ํผ์Šค
  • telc
  • ๋…์ผ์–ด
  • ์„์‚ฌ
  • ์‹ธํ”ผ
  • ํŒจ์ŠคํŠธ์บ ํผ์Šคํ›„๊ธฐ
  • B1
  • ์™•๋ˆˆ
  • ์ทจ์—…์ค€๋น„
  • SSAFY
  • ์ž๋ฃŒ๊ตฌ์กฐ
  • ๋ชจํ—˜์ผ๊ธฐ
  • ๋…์ผ
  • C/C++
  • Java
  • ๊ฒŒ์ž„์ผ๊ธฐ
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • ํ”Œ๋ ˆ์ด์ผ๊ธฐ
  • ์ง์žฅ์ธ์ธ๊ฐ•
  • bruteforce
  • ๋…์ผ์œ ํ•™
  • ํฌ๋ฃจ์Šค์นผ
  • ์ •๋ ฌ
  • ์™•๊ตญ์˜๋ˆˆ๋ฌผ
  • ์ ค๋‹ค
  • ํŒจ์บ ์ฑŒ๋ฆฐ์ง€
  • ํ•œ๋ฒˆ์—๋๋‚ด๋Š”์ฝ”๋”ฉํ…Œ์ŠคํŠธ369JavaํŽธ์ดˆ๊ฒฉ์ฐจํŒจํ‚ค์ง€Online.
  • ์ง์žฅ์ธ์ž๊ธฐ๊ณ„๋ฐœ
  • sort

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
JuneBee

JuneBee

Class Case Exception
๐Ÿ““ STUDY/JAVA

Class Case Exception

2022. 5. 17. 22:44
728x90
๋ฐ˜์‘ํ˜•

Class Case Exception

import java.util.Arrays;

class Burger{
	String name;
	int price;
	Burger(String name, int price){}
	
}
public class Test01 {
	public static void main(String[] args) {
		Burger[] burgers = new Burger[3];
		burgers[0] = new Burger("1957",6000);
		burgers[1] = new Burger("๋”๋ธ”๋ถˆ๊ณ ๊ธฐ",7000);
		burgers[2] = new Burger("ํ•œ์šฐ๋ฒ„๊ฑฐ", 8000);
		
		Arrays.sort(burgers); //Exception occurs
}
}

์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ์‹œํ‚ค๋ฉด ClassCaseException์ด ๋ฐœ์ƒํ•œ๋‹ค

์ด๋Š” Arrays.sort์˜ ๊ธฐ์ค€์ ์ธ comparable์— ๋ฒ„๊ฑฐ ๊ฐ์ฒด (name,int)๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ธฐ์ค€์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” comparable class๋ฅผ implements ํ•ด์„œ compareTo ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์ค˜์•ผํ•œ๋‹ค.

 

๐Ÿคฆ๐Ÿป‍โ™€๏ธ CompareTo Method
return values: ์Œ์ˆ˜, 0 , ์–‘์ˆ˜
์Œ์ˆ˜๊ฐ’ ๋ฆฌํ„ด: ๋‚ด๊ฐ€ ๋น„๊ต๋Œ€์ƒ๋ณด๋‹ค ์•ž์— ์žˆ๋‹ค
0 ๋ฆฌํ„ด: ๋น„๊ต ๋Œ€์ƒ๊ณผ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ฒ ๋‹ค (์ด๋™ x)
์–‘์ˆ˜๊ฐ’ ๋ฆฌํ„ด: ๋‚ด๊ฐ€ ๋น„๊ต๋Œ€์ƒ๋ณด๋‹ค ๋’ค์— ์žˆ๋‹ค

 

CompareTo๋ฅผ ํ™œ์šฉ

public class Student implements Comparable<Student>{
	int no, score;
	
	public int getNo() {return this.no;}
	public void setNo(int no) {this.no = no;}
	public int getScore() {return this.score;}
	public void setScore(int score) {this.score = score;}
	
	@Override
	public String toString() {
		return "Student [no=" + no + ", score=" + score + "]";
	}
	/* ์Œ์ˆ˜๊ฐ’์ด ๋ฆฌํ„ด์ผ ๊ฒฝ์šฐ ๊ธฐ์ค€์ ์ด ๋น„๊ต๋Œ€์ƒ์˜ ์•ž์— ์œ„์น˜
	 * ์–‘์ˆ˜๊ฐ’์ด ๋ฆฌํ„ด์ผ ๊ฒฝ์šฐ ๊ธฐ์ค€์ ์ด ๋น„๊ต๋Œ€์ƒ์˜ ๋’ค์˜ ์œ„์น˜
	 * 0์ผ ๊ฒฝ์šฐ ์ด๋™ ์—†์Œ*/

	@Override
	public int compareTo(Student o) {
		return this.no - o.no; //์˜ค๋ฆ„์ฐจ์ˆœ
	}

CompareTo

1. ๋‚ด ๋ฒˆํ˜ธ(this.no): 7๋ฒˆ

2. ๋น„๊ต ๋Œ€์ƒ ๋ฒˆํ˜ธ(o.no): 3๋ฒˆ //o๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์•ˆ์— ๋“ค์–ด๊ฐ„ ๊ฐ์ฒด์ž„

→ this.no - o.no >0. ์–‘์ˆ˜๋‹ˆ๊นŒ ๋‚ด๊ฐ€ ๋น„๊ต ๋Œ€์ƒ๋ณด๋‹ค ๋’ค์— ์žˆ์Œ→์ด๋™

 

1. ๋‚ด๋ฒˆํ˜ธ(this.no):3๋ฒˆ
2. ๋น„๊ต ๋Œ€์ƒ ๋ฒˆํ˜ธ(o.no): 7๋ฒˆ → this.no - o.no <0 : ์Œ์ˆ˜๋‹ˆ๊นŒ ์•ž์œผ๋กœ ์ด๋™

 ๐Ÿคฆ๐Ÿป‍โ™€๏ธ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด return๊ฐ’์„ o.no - this.no; ๋กœ ์ฃผ๋ฉด ๋œ๋‹ค

 

 

 

ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋ฉด,

import java.util.Arrays;

public class Test02 {
	public static void main(String[] args) {
		Student[] arr = {
				new Student(2,14),
				new Student(1,50),
				new Student(4,35),
				new Student(3, 90)
		};

		System.out.println(Arrays.toString(arr));
		Arrays.sort(arr);//CompareTo๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ด์„œ ๊ฐ€๋Šฅ
		System.out.println(Arrays.toString(arr));
	}
}

Sort ๊ฐ€ ์•ˆ๋˜์–ด์žˆ๋Š” ์ถœ๋ ฅ๊ฐ’:

[Student [no=2, score=14], Student [no=1, score=50], Student [no=4, score=35], Student [no=3, score=90]]

 

์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ Sort๋ฅผ ์ด์šฉํ•œ ์ถœ๋ ฅ๊ฐ’:

[Student [no=1, score=50], Student [no=2, score=14], Student [no=3, score=90], Student [no=4, score=35]]

Comparable ์ธํ„ฐํŽ˜์ด์Šค ํ™œ์šฉ

Comparator ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„

private static class StudentComparator implements Comparator <Student>{
		@Override
		public int compare(Student o1, Student o2) {
			return o2.no - o1.no; //๋‚ด๋ฆผ์ฐจ์ˆœ
		}
	}

//์ ์ˆ˜ ์ˆœ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ์ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ๋ฒˆํ˜ธ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๊ธฐ์ค€์„
//ํ•œ๊ฐ€์ง€ ์ด์ƒ์œผ๋กœ ๋‘˜ ๋•Œ:
	private static class StudentComparator2 implements Comparator <Student>{
		@Override
		public int compare(Student o1, Student o2) {
			if(o2.score==o1.score) return o2.no-o1.no;//๋‚ด๋ฆผ์ฐจ์ˆœ
			else return o1.score - o2.score ; //์˜ค๋ฆ„์ฐจ์ˆœ
		}
		
	}

๋ฉ”์ธ ๋ฉ”์„œ๋“œ:

public static void main(String[] args) {
		Student[] arr = {
				new Student(2,14),
				new Student(1,50),
				new Student(4,35),
				new Student(5,50), //์ ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋•Œ
				new Student(3, 90)
		
		};
	 // Student Comparator๊ฐ€ ์ •๋ ฌ์˜ ๊ธฐ์ค€์ด ๋œ๋‹ค
	//	Arrays.sort(arr, new StudentComparator1());
	//	System.out.println(Arrays.toString(arr));
		Arrays.sort(arr, new StudentComparator2());
		System.out.println(Arrays.toString(arr));
	}

์ต๋ช… ํด๋ž˜์Šค ์ด์šฉ

private ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ์ต๋ช… ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค๋•Œ์—๋Š” new ํ‚ค์›Œ๋“œ ๋‹ค์Œ์—๋Š” ์ƒ์† ํด๋ž˜์Šค๊ฐ€ ์™€์•ผํ•œ๋‹ค

Arrays.sort(arr, new Comparator<Student>(){
			@Override
			public int compare(Student o1, Student o2){
			return o1.score-o2.score;
			}
		});
		System.out.println(Arrays.toString(arr));

๋žŒ๋‹ค์‹ ์ด์šฉ

๐Ÿคฆ๐Ÿป‍โ™€๏ธ @FunctionalInterface: ์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์— ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ → ๋žŒ๋‹ค์™€ ์—ฐ๊ด€์ง€์–ด์„œ ์ƒ๊ฐํ•˜์ž
  1. ๋žŒ๋‹ค ํด๋ž˜์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์„ ์–ธ๋ฌธ ๋นผ๊ณ (ํ•˜๋‚˜๋ฐ–์— ์—†์–ด์„œ) ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.
  2. ๋ฐ˜ํ™˜ ํƒ€์ž… ์—ญ์‹œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š” ์—†๋‹ค.
  3. ๋˜ํ•œ, Student ์—ญ์‹œ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•˜๋‹ค (arr๋ฐฐ์—ด์— ์ด๋ฏธ Student ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์–ด์„œ → Student ํƒ€์ž…๋„ ๋น ์ ธ๋„ ๋œ๋‹ค)
  4. ํ•œ๋ฌธ์žฅ ์ผ ๋•Œ, ์ค‘๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฆฌํ„ด์„ ๋ฐ˜๋“œ์‹œ ์ œ๊ฑฐํ•ด์•ผํ•จ
Arrays.sort(arr, (o1, o1)-> o1.score - o2.score);
System.out.println(Arrays.toString(arr));
728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ““ STUDY > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ถ”์ƒํ™”  (0) 2022.05.17
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (1) 2022.05.17
JAVA Basics  (0) 2022.05.12
Variables  (0) 2021.07.15
๋‹ค์ง  (1) 2021.07.15
    '๐Ÿ““ STUDY/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์ถ”์ƒํ™”
    • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • JAVA Basics
    • Variables
    JuneBee
    JuneBee
    โ‚Šหš.๐ŸŽง๐Ÿ““ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ ๐“‚ƒ๐Ÿ–Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”