[혼자 공부하는 자바] Chapter 13

혜원·2023년 8월 17일
0

기본 미션: 직접 정리한 키워드 공유하기

ArrayList : List 인터페이스의 대표적인 구현 클래스
HashSet : SET 인터페이스의 구현 클래스

선택 미션: p. 573 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡처하기



13_1 컬렉션 프레임워크

List 컬렉션

  • 객체를 인덱스로 관리
  • 객체를 저장할 때 자동 인덱스 부여, 다양한 메소드 제공

ArrayList

  • List 인터페이스의 대표적인 구현 클래스 String을 저장하는 ArrayList 생성
    List<String> list = new ArrayList<String>();
    List<String> list = new ArrayList<>();

    9 ~ 13 라인 : String 객체를 저장
    15 라인 : 저장된 객체수 얻기 (5개)
    19 라인 : 2번 인덱스의 객체 얻기
    23 ~ 26 라인 : 저장된 객체 수 만큼 반복
    29 라인 : 2번 인덱스 객체 삭제
    30 라인 : 2번 인덱스 객체 삭제
    33 ~ 36 라인 : 저장된 객체 수 만큼 반복

Vector와 ArrayList가 다른 점

Vector는 멀티스레드가 동시에 Vector의 메소드 실행 불가
하나의 스레드가 메소드 실행 완료 뒤에 다른 스레드가 메소드 실행 가능


LinkedList

  • 인접참조를 링크해서 체인처럼 관리

    ArrayList는 뒷쪽 인덱스들을 모두 증가 감소시키는 시간 때문에 처리 속도가 더 느리다.


HashSet

  • SET 인터페이스의 구현 클래스

기본 생성자 호출

Set<E> set = new HashSet<E>();

String 객체를 저장하는 HashSet 생성

Set<String> set = new HashSet<String>();
Set<String> set = new HashSet<>();


문자열을 HashSet에 저장할 경우, 같은 문자열을 갖는 String 객체는 동등한 객체로 간주되고 다른 문자열을 갖는 Stirng 객체는 다른 객체로 간주됨


HashMap

  • Map 인터페이스를 구현한 대표적인 Map 컬렉션
  • 동등 객체의 조건 : hashCode()의 리턴값이 같아야하고, equals() 메소드가 true를 리턴해야함


학번과 이름이 동일한 Student를 동등 키로 간주하기 위해 Student클래스에 hashCode()와 equals()메소드가 재정의 됨


Hashtable

  • HashMap과 동등한 내부 구조를 가짐
  • 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있음


Hashtable에 저장되어있는 아이디와 비밀번호를 비교 후 로그인 여부를 출력함


13_2 LIFO와 FIFO 컬렉션

  • 후입 선출 : 나중에 넣은 객체가 먼저 빠져나가는 자료구조
  • 선입 선출 : 먼저 넣은 객체가 먼저 빠져나가는 자료구조

Stack

String을 저장하는 Stack 생성

Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>();



마지막에 넣은 동전이 제일 먼저 나오게 되는 구조 (동전 케이스)


Queue

  • Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다.

LinkedList 객체를 Queue 인터페이스 타입으로 변환

Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new LinkedList<>():

기숙사 문이 닫히는 바람에 책을 못가져가 너무 늦게 제출해버리는 5주차..ㅠㅠ
지난주에 더 열심히 하겠다고 적어놓고는 끄응... 다시 반성해야지

1개의 댓글

comment-user-thumbnail
2023년 8월 17일

정보에 감사드립니다.

답글 달기