자바 Collection에 대한 심화 질문 모음

문지은·2021년 11월 16일
0

Java

목록 보기
3/4

이 글을 참조했습니다 😎

자바에서 Collection이란?

  • 효율적으로 데이터를 저장하고 관리하는 데 도움이 되는 인터페이스와 클래스의 모음

  • Set, List, Queue, Deque와 같은 인터페이스 제공

  • ArrayList, Vector, LinkedList, HashSet, PriorityQueue, TreeSet, LinkedHashSet과 같은 클래스 제공

  • 컬렉션 디자인을 할 필요없이 컬렉션 활용에만 집중할 수 있으므로 프로그래밍 노력 감소

  • 데이터 구조의 고성능 구현을 제공하므로 성능 향상

자바에서 프레임워크란?

  • 이미 만들어진 아키텍처를 제공하는 클래스 및 인터페이스 집합.

  • 최적의 객체 지향 설계에는 항상 모든 클래스가 동일 종류의 작업을 수행하도록 클래스 컬렉션이 있는 프레임워크가 포함된다.

ArrayList와 Vector의 차이점?

  • ArrayList
    • 배열 크기의 50퍼센트만큼 크기를 늘릴 수 있음
    • non synchronized
    • non thread-safe
    • non legacy class
  • Vector
    • 배열 크기의 두배만큼 크기를 늘릴 수 있음
    • synchronized
    • thread-safe
    • legacy class
  • thread-safe란?
    멀티 스레드 환경에서 한 자원에 대해 여러 스레드가 접근해도 문제가 생기지 않음
  • synchronized(동기화)란?
    한 스레드가 자원을 사용하는 동안 해당 자원에 대해 lock이 걸려있어서 다른 스레드는 접근하지 못함

즉, 멀티 스레드가 아닌 환경에서는 ArrayList가 더 빠르다. 또한 Vector는 레거시 클래스이므로 ArrayList를 쓰는 것을 더 추천

Iterator과 Enumeration의 차이점?

  • Iterator

    • legacy, non-legacy 모두 통과
    • Enumeration보다 느림
    • 순회 중간에 remove 가능
    • fail-fast
  • Enumeration

    • legacy만 통과
    • Iterator보다 빠름
    • 순회하면서 traverse만 가능
    • non fail-fast
  • fail-fast란?
    동작 중 오류가 발생하면 바로 이를 알리고 작업을 중단.
    반대는 fail-safe : 동작 중 오류가 발생해도 계속 작업 진행

LinkedList와 ArrayList의 차이점?

  • LinkedList

    • 데이터 조작에 최적화
    • 삽입, 제거 : O(1)
    • 탐색 : O(n)
  • ArrayList

    • 데이터 저장 / 액세스에 최적화
    • 삽입, 제거 : 최상은 O(1), 최악은 O(n)
    • 탐색 : O(1)

Queue 인터페이스에서 poll()과 remove()의 차이점?

둘 다 헤드에 있는 요소 반환하고 제거.
하지만 대기열이 비어있을 때 remove()는 예외를 throw, poll()은 null반환

컴퓨터 메모리 측면에서 Stack이란?

함수에 의해 생성된 임시 변수 저장하는 곳. 런타임 중에 선언, 초기화 된다.

Map 인터페이스에서 collection view를 나열해보기

  • key-set view : 키 집합
  • value-set view : 값 집합
  • entry-set view : 키-값 쌍의 집합

thread-safe한 Collection을 만드는 법

Collections.synchronizedList(list);
Collections.synchronizedMap(map);
Collections.synchronizedSet(set);

Queue와 Deque의 차이점?

  • Queue

    • 한쪽 끝에서 추가 / 제거
  • Deque

    • 양쪽 끝에서 추가 / 제거

hashmap과 hashtable의 차이점?

  • hashmap

    • non-synchronized, non thread-safe
    • null key, null value 허락
    • iterator가 순회
  • hashtable

    • synchronized, thread-safe
    • null key, null value 허락하지 않음
    • iterator, enumerator가 순회

Iterator란?

컬렉션을 순화하기 위한 방법을 제공하는 인터페이스.

queue에서 peek()이란?

헤드 요소를 리턴
어떤 요소도 제거하지 않으며 비어 있으면 null 리턴

profile
백엔드 개발자입니다.

0개의 댓글