[Beyond SW] 20251031

이경민·2025년 11월 3일

한화시스템 Beyond SW

목록 보기
23/40

chap13.

Generics

데이터의 타입을 일반화한다는 의미
제네릭 타입(T, E, K, V)을 활용하여 하나의 클래스로 해당 제네릭 타입에 변화를 줘서 제네릭 클래스의 인스턴스를 다양한 타입을 지닌 인스턴스로 활용할 수 있다.

GenericTest<Integer> gt = new GenericTest<Integer>();

<> 안의 타입은 기본형(int, double)은 직접 못 넣고 래퍼(Wrapper) 클래스(Integer, Double)를 넣어야 합니다.

  • 구현의 편의성: 하나의 클래스만 작성해도 여러 타입의 필드값을 가진 클래스로 변형가능
  • 자료형의 안전성 : 제네릭을 적용한 클래스는 타입을 명확히 알고 쓰기 때문에 해당 제네릭 클래스의 필드 타입이나 메소드의 매개변수나 반환 형을 알고 사용하기 때문에

와일드카드(Wildcard)란?

제네릭 클래스의 인스턴스를 유연하게 활용하기 위한 문법이다. 메소드의 매개변수로 받을 시 타입을 원하는 만큼으로 제한하는 것으로 불특정한 제네릭 클래스 타입을 조금 더 활용할 수 있다.

<?>: 모든 타입을 허용하는 와일드 카드
<? extends T>: T 타입 또는 T의 하위 타입을 허용하는 와일드 카드
<? super T>: T 타입 또는 T의 상위 타입을 허용하는 와일드 카드

chap 14.

컬렉션

:많은 데이터들을 효과적으로 처리할 수있는 방법을 제공하는 클래스들의 집합
Collection 인터페이스는 List, Set, Queue 로 크게 3가지 상위 인터페이스로 분류가 된다.

Collection 사용 이유

  1. 일관된 API
  2. 프로그래밍 비용 감소
  3. 프로그래밍 속도 및 품질 향상
List<E>	    **순서가 있는** 데이터의 집합으로, 데이터의 **중복을 허용**한다.
Set<E>	    **순서가 없는** 데이터의 집합으로, 데이터 **중복 허용하지 않는다.**
Map<K, V>	키와 값이 쌍를 이루어 구성되는 데이터 집합으로 순서가 없다. 키의 중복은 허용되지 않지만, 값의 중복은 허용된다.

List

List 인터페이스 : 순서가 있는 데이터의 집합(저장 순서 유지). 중복 저장 허용

  • ArrayList, LinkedList, Vector, Stack

ArrayList

자바에서 제공하는 기본 배열보다 느릴 수 있지만 동적 배열이 구현되어 있음
(배열의 단점을 보완하기 위해 만듦)

  • 내부적으로 10칸짜리 배열을 생성해서 관리함
  • 배열의 단점을 보완하기 위해 만들어졌기 때문에 크기 변경, 요소 추가/삭제/정렬 기능
  • 스레드간 동기화는 안됨. 다수의 스레드가 동시에 접근하여 데이터를 조작할 경우 데이터 훼손 일어날 수 있음
  • 인덱스로 데이터에 접근가능 -> 조회기능적으로 뛰어남

LinkedList

  • LinkedList는 저장되는 데이터들이 연속된 공간에 저장되는 것이 아니다. 따라서 각 데이터를 링크(Link)를 연결하여 구성한다.
  • 데이터의 삽입, 삭제가 빈번할 경우 연결되는 링크 정보만 수정하면 되기 때문에 ArrayList보다 더 적합하다.
  • 스택, 큐, 양방향 큐 등을 구성하기 용이하다.
  • LinkedList 에는 단일 연결 리스트와 이중 연결 리스트가 있다.
    • 단일 연결 리스트
      • 저장한 요소가 순서를 유지하지 않고 저장되지만 이러한 요소들 사이를 링크로 연결하여 구성하며 마치 연결된 리스트 형태인 것처럼 만든 자료구조이다.
      • 요소의 저장과 삭제 시 다음 요소를 가리키는 참조 링크만 변경하면 되기 때문에 요소의 저장과 삭제가 빈번히 일어나는 경우 ArrayList보다 성능 면에서 우수하다.
    • 이중 연결 리스트
      • 단일 연결 리스트는 다음 요소만 링크하는 반면 이중 연결 리스트는 이전 요소도 링크하여 이전 요소로 접근하기 쉽게 고안된 자료구조 이다.

0개의 댓글