이력서 스터디 DAY 4

HEUKWU·2023년 5월 11일
0

List

List는 데이터 요소들을 순서대로 저장하는 자료 구조이다.

  • List는 인덱스를 사용하여 데이터에 접근할 수 있다. 따라서 특정 위치의 데이터를 조회하거나 수정할 수 있다.

  • List는 데이터의 중복을 허용한다. 따라서 동일한 요소를 여러 번 포함할 수 있다.

  • List는 데이터의 삽입과 삭제가 가능하다. 데이터를 중간에 삽입하거나 삭제하면 나머지 요소들의 인덱스가 조정된다.

  • List의 구현체로는 ArrayList와 LinkedList가 널리 사용된다.
    - ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하며, 데이터의 조회가 빠르다.
    - LinkedList는 각 요소가 이전 요소와 다음 요소의 링크로 연결되어 있으며, 데이터의 삽입과 삭제가 빠르다.

Set

Set은 중복을 허용하지 않는 데이터의 컬렉션이다. 따라서 고유한 값을 저장하고자 할 때 사용된다.

  • Set은 순서가 없다. 따라서 데이터를 저장한 순서대로 접근할 수는 없다.

  • Set은 데이터의 삽입, 삭제, 수정이 가능하다. 중복된 값을 추가하려고 하면 이미 존재하는 값으로 간주되어 추가되지 않는다.

  • Set의 대표적인 구현체로는 HashSet과 TreeSet이 있다.
    - HashSet은 해시 함수를 사용하여 데이터를 저장하고 검색한다. 데이터의 순서는 보장되지 않는다.
    - TreeSet은 데이터를 정렬된 상태로 저장하여 검색할 수 있다.

Map

Map은 키(Key)와 값(Value)으로 이루어진 데이터의 컬렉션이다. 키는 중복될 수 없지만 값은 중복될 수 있다.

  • Map은 각각의 요소가 키와 값의 쌍으로 구성된다. 예를 들어, {"이름": "홍길동", "나이": 30}과 같이 키와 값이 연결되어 있다.

  • Map은 데이터의 순서가 없으며, 키를 기반으로 데이터에 접근할 수 있다. 따라서 특정 키에 대응하는 값을 조회하거나 수정할 수 있다.

  • Map은 데이터의 삽입, 삭제, 수정이 가능하다. 이미 존재하는 키로 데이터를 추가하면 값이 업데이트된다.

  • Map의 대표적인 구현체로는 HashMap과 TreeMap이 있다.
    - HashMap은 해시 함수를 사용하여 데이터를 저장하고 검색한다. 데이터의 순서는 보장되지 않는다.
    - TreeMap은 데이터를 정렬된 상태로 저장하여 검색할 수 있다.

HashMap

HashMap은 Map 인터페이스를 구현한 가장 일반적으로 사용되는 클래스이다.

  • HashMap은 해시 테이블(Hash Table)을 사용하여 데이터를 저장하고 검색한다.
    - 해시 테이블은 배열과 연결 리스트를 조합한 자료 구조로, 데이터를 키-값 쌍의 형태로 저장하며 키를 기반으로 빠른 검색을 제공한다.

  • HashMap은 데이터의 순서를 보장하지 않는다. 따라서 데이터를 저장한 순서대로 접근하고 싶다면 LinkedHashMap을 사용해야 한다.

  • HashMap은 키와 값으로 null 값을 허용한다. 따라서 null 값을 키나 값으로 사용할 수 있다.

  • HashMap은 데이터의 삽입, 삭제, 수정, 검색이 O(1)의 시간복잡도로 이루어진다. 해시 함수를 사용하여 데이터의 위치를 계산하기 때문에 매우 빠른 성능을 제공한다.

  • HashMap은 멀티스레드 환경에서 동시에 접근할 경우에 동기화를 보장하지 않는다. 멀티스레드 환경에서 안전하게 사용하려면 ConcurrentHashMap을 사용해야 한다.

차이점

List는 요소의 순서를 유지하고 중복을 허용한다. Set은 순서를 유지하지 않으며 중복을 허용하지 않는다. Map은 키가 고유한 키-값 쌍을 유지한다.

HashMap은 요소의 저장 및 검색을 위해 해싱을 사용하는 Map 인터페이스의 특정 구현이다. 평균적으로 빠른 작업을 제공한다. 다른 Map 구현에는 다른 기본 데이터 구조 및 특성이 있을 수 있다.

List와 Set은 순서와 고유성을 고려하여 요소의 컬렉션을 관리하는 데 주로 사용된다. ArrayList 및 HashSet은 각각 List 및 Set 구현의 예이다.

Map 및 HashMap은 키 기반의 데이터 저장 및 검색에 사용된다. TreeMap은 키를 기반으로 정렬된 순서로 요소를 저장하는 Map의 특정 구현이다.


스프링 컨테이너

스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트로써, 애플리케이션의 객체를 생성, 관리, 제어하는 역할을 수행한다. 스프링 컨테이너는 IoC (Inversion of Control) 컨테이너로도 알려져 있다.

스프링 컨테이너는 개발자가 직접 객체를 생성하고 관리하는 대신, 컨테이너에게 객체의 생성과 관리를 위임한다. 이를 통해 애플리케이션의 결합도를 낮추고 유연성과 확장성을 높일 수 있다.

핵심 기능

  • 객체의 생성과 관리
    스프링 컨테이너는 개발자가 정의한 객체(Bean) 의 인스턴스를 생성하고 관리한다. 컨테이너는 빈의 라이프사이클을 관리하며, 필요에 따라 새로운 빈을 생성하거나 기존 빈을 재사용한다.

  • 의존성 주입 (Dependency Injection)
    스프링 컨테이너는 객체 간의 의존성을 자동으로 주입해준다. 개발자는 의존성을 직접 해결하기 위한 코드를 작성할 필요 없이, 컨테이너에게 의존성을 선언하면 컨테이너가 알아서 해당 의존성을 주입한다.

  • 빈 설정 관리
    스프링 컨테이너는 XML, 애노테이션 또는 자바 설정 파일과 같은 설정 메타데이터를 사용하여 빈의 구성을 관리한다. 개발자는 이러한 설정을 통해 빈의 속성, 의존성 및 빈의 스코프와 같은 라이프사이클을 정의할 수 있다.

스프링 컨테이너를 사용하면 객체의 생성과 관리, 의존성 주입, 설정 관리 등을 편리하게 처리할 수 있으며, 애플리케이션의 유연성과 테스트 용이성을 개선할 수 있다.

0개의 댓글

관련 채용 정보