최고 조상 클래스가 제공하는 equals를 재 정의하자
public boolean equals (Object o){
Patient p =(Patient)o;
if( this. getName().eqauls(p.getName()) && this.getPhone().equals(p.getPhone()) ){
return true;
}
return false;
}
리스트는 순서가 있는 자료구조 / 중복 가능
set 은 순서가 없는 자료구조 / 중복을 허용하지 않음
compareTo()
가 있어야함
사실 add하는 순간 정렬된 상태로 저장됨
Patient p3 = new Patient("환자3")
a.addPatient(p3);
a.addPatient(p3);
Patient p3 = new Patient("환자")
해싱 기법의 핵심은 해시함수이다
동일한 값을 넣으면 동일한 값이 나와야함
가능하면 충돌이 발생하지 않아야함 (충돌이 발생할 수록 성능이 떨어짐)
equals 메소드에 의해 true가 나오기 위해서는 두 객체의 hashcode는 같아야 한다.
=> HashCode , equals 의 오버라이딩이 필요하다
비교기 : 각각에는 추상메서드가 존재하고 구현해야지만 정렬을 할 수 있다
외부 비교기 : Comparator compare(T o1 , T o2) => o1이 this 역할 o2 가 t 역할
내부 비교기 : Comparable (인터페이스인데 구현해야함 ) compareTo(T t) => 자동차 클래스 안쪽에 생성 하나는 this 하나는 t
외부 비교기가 우선 순위가 더 높다.
ctrl + t 로 확인이 가능하다
public class ExceptionTest {
public static void main(String[] args) {
System.out.println("main 시작");
try { // 예외가 발생할 우려가 있는 코드
int a = 3 / 0 ;
System.out.println(1); // ArithmeticException : / by zero 정수의 나눗셈에서만 발생
} catch (ArithmeticException e) { //try 블럭 안쪽에서 예외 발생시 처리할 코드
System.out.println(3);
} catch (RuntimeException e) {
System.out.println(4);
} catch (Exception e) {
System.out.println(5);
}
System.out.println("정상 종료");
}
}
main 시작 3 정상 종료
이런식으로 여러개를 받을 수 있다 . if 문처럼 위에서 걸리면 아래꺼는 무시함
class Exception
public Exception(String message){
super();
}
package com.ssafy.ws08;
public class ExceptionTest2 {
public static void main(String[] args) { // throws 나의예외,ArithmeticException { //시험문제랍니다
나의예외 a = new 나의예외("이름을 입력 안함");
try {
throw a;// exception 폭탄 발생 시키기
} catch (나의예외 e) { // 폭탄 해체시키기
e.printStackTrace(); //com.ssafy.ws08.나의예외: 이름을 입력 안함 (빨간색)
System.out.println(e.getMessage()); // 이름을 입력 안함
}
System.out.println("정상 종료");
}
}
class 나의예외 extends Exception{
public 나의예외(String msg) {
super(msg);
}
}
디버그하면 왼쪽에 콜 스택을 볼 수있다.
F6 다음줄로 내려감
F5 내려가면서 메서드 안으로 들어감
디버그가 끝나면 perspective 를 JAVA로 바꿔서 돌아올 수 있다.