eterno

JAVA 18일차.HashMap, 정렬, 예외처리 본문

JAVA/강의노트

JAVA 18일차.HashMap, 정렬, 예외처리

영원한별똥별 2022. 9. 12. 08:59
728x90
반응형

알고리즘과 자료구조를 비교하기

알고리즘(algorithm)

: 데이터를 어떤 절차를 걸쳐 수행하는지 나열 하는 것( = 프로세싱하는 것)을 의미한다.

  • 문제풀이에 필요한 계산절차 또는 처리과정의 순서(프로그램명령어의 집합)
     * 순서도
  • 알고리즘의 구현 단계
    : 문제 정의 → 모델 고안 → 명세 작성 → 설계 → 검증 → 분석 (복잡도 등) → 구현 → 테스트 → 문서화

자료구조(data structure)

: 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미한다.

  • 자료구조는 프로그램 실행 중 메모리에 자료를 유지/관리 하기위해 사용한다.
  • 자료구조의 기본은 배열이다.
    * Array : 배열 / Arrays : 객체배열

Hash Map

: hash방식으로 자료를 관리하는 자료구조

  •  java.util.* 클래스에 있는 클래스로 컬랙션 프레임워크에 해당된다.
  • 해시 테이블 : 해시 방식으로 자료를 저장하는 공간
    → 데이터의 순서와 위치가 정해져 있지 않다.(키와 값으로 정해짐)
  • 해시함수 : key값이 정해지면 해시 테이블의 위치가 정해지는데 이런 위치를 계산하는 함수
    ex) index = hash(key)
  • HashMap은 key-value 쌍으로 이루어진 자료를 관리하는데 사용
  • HashMap의 key값은 중복 될 수 없다.
    만약 중복 값이 발생한다면 마지막에 쓴 key값으로 출력 된다..(=스택구조라고 한다.)
  • 순서가 없기때문에 Iterator , keyset()과 entrySet() 을 사용한다.
    • Iterator : 데이터를 통에 다 담아서 커서가 돌면서 데이터 있으면 true 없으면 false 출력 (순서가 없다)
      ⇒ while문이랑 같이 씀
    • keySet() : key값만 반환할때
      public Set<K> keySet()
    • entrySet() : key값과 value값을 반환할때
      public Set<Map.Entry<K,V>> entrySet()
  • <>(제너릭)을 사용해 자료형을 한정 시킬 수 있다. (ArrayList와는 다르게 쓰인다.)

예제)

키값은 중복될 수 없으며 중복되면 마지막 key값으로 반환된다.

예제) 기억해두기


정렬(Sort)

  - ArrayList

 : 객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용

 

예제)

예제)


예외처리(Exceptions)

 : 프로그램이 정상적으로 수행될 수 있게 예외를 사전에 정의하는 것

  (프로그램에 문제가 생겼을 때 이 프로그램을 죽일지 살릴지 정하는 것)

  • PID(Program ID) : 프로그램마다 고유 번호가 있다.

 * Exceptions : 예외클래스의 최상위 클래스(모든 예외처리는 Exception에 포함되어있다)

java.lang의 예외(왼쪽) , java.util의 예외(오른쪽)

Checked Exception : 무조건!!

  • 컴파일 할 때 반드시 예외처리를 해야한다.
  • 예외 발생시 롤백을 하지 않는다.
  • IOException
  • ClassNotFoundException etc.

UnChecked Exception : 해도 되고 안해도 된다

  • 실행할 때 예외처리를 명시적으로 하지 않아도 된다.
  • 예외 발생시 롤백을 해야 한다.
  • NullPointerException : 자주 발생하는 오류니까 기억해두기
  • ClassCastException etc.
  • RuntimeException를  상위클래스로 갖는 것

try - catch - finally

: 예외가 발생해도 프로그램은 정상적으로 수행된다.

기본문장

try {
    예외 발생이 예상되는 구문 작성하는 블럭
} catch(예외 클래스 참조변수 e){
    예외를 처리하는 블럭 : 예외 클래스 계층 구조상 하위에 있는 예외 클래스 기술
} finally {
    예외 발생과 관련없이 실행되는 블럭
}

* 자식클래스부터 사용

예제)

finally { }은 꼭 안써도 됨(필요시 사용)

 

예제)

 - Date() : 현재 날짜구하는 함수

 

예제)

예제)

try-catch를 사용한 예외처리

 

throw : 예외를 다른 곳에 던지는 것(미루는 것)

 - throw 에 의해 생성된 예외상황은 반드시 try-catch 문에 의해 처리되거나 throws에 의해서 넘겨져야 한다.

 - 예외를 처리할 때는 throw를 제일 먼저 쓰고 맨 마지막에 처리하는 애(보통 main) 한테 try - catch 를 넣어주면 됨

 

예제) TestException_3이랑 비교해보기

throw를 사용한 예외처리

 

728x90
반응형