주니어 자바 개발자를 위한 100가지 질문 [2-1.Container ]

Eunjin·2023년 5월 24일
1

📌 자바 컨테이너란 무엇인가요?

A. 자바 컨테이너(Java container)는 자바 애플리케이션을 실행하고 관리하는 환경을 제공하는 소프트웨어입니다. 컨테이너는 애플리케이션을 실행하기 위해 필요한 모든 요소를 포함하고 있으며, 애플리케이션의 실행에 필요한 자원을 격리하여 관리합니다.

자바 컨테이너(Java container)

  • Java Virtual Machine (JVM) 위에서 실행됨 → JVM은 자바 애플리케이션을 실행하는 데 필요한 런타임 환경을 제공
  • 자바 애플리케이션은 컨테이너 내에서 독립적으로 실행되며, 다른 애플리케이션과는 격리되어 작동됨 → 이를 통해 애플리케이션 간의 충돌을 방지하고, 보안을 강화하며, 자원을 효율적으로 관리 가능
  • 자바 컨테이너는 애플리케이션의 배포, 확장, 관리 등을 단순화하고 표준화하는 장점을 제공

(예) Java Servlet 컨테이너인 Apache Tomcat

  • Tomcat은 웹 애플리케이션을 실행하기 위한 환경을 제공하며, 서블릿(Servlet) 기반의 애플리케이션을 관리

다른 자바 컨테이너로는 Eclipse Jetty, IBM WebSphere, Oracle WebLogic 등



📌Collection과 Collections의 차이는 무엇인가요?

A. Collection은 컬렉션 요소를 그룹화하여 저장하고 관리하는 인터페이스를 나타내며, Collections는 컬렉션을 조작하고 변환하는 데 유용한 정적 메서드를 제공하는 유틸리티 클래스입니다. Collection은 인터페이스이고 Collections는 클래스입니다.

Collection이란?

  • Collection은 인터페이스
  • Collection Framework라고 하는 계층(hierarchy)의 최상위 인터페이스
  • java.util 패키지에 속해 있으며, 여러 개의 요소를 그룹화하여 저장하고 관리하는 기능을 제공함
  • 단순히 객체의 모음이며, 순서에 따라 요소에 접근하고 반복할 수 있는 기능을 가지고 있음
  • (예) ArrayList, LinkedList, HashSet, TreeSet 등

Collections이란?

  • Collections는 유틸리티 클래스
  • Collection 인터페이스를 구현한 컬렉션 객체들을 조작하고, 정렬하고, 검색하고, 변환하는 데 유용한 정적 메서드들을 제공
  • 정적 메서드들로만 구성되어 있으므로 객체를 생성할 필요 없이 클래스 이름을 통해 메서드에 접근할 수 있음
  • (예) sort(), reverse(), binarySearch() 등

컬렉션 프레임워크(collection framework)

  • 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미함
  • 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것

(http://www.tcpschool.com/java/java_collectionFramework_concept)



📌 List, Set, Map의 차이점을 말해주세요.

A. List, Set, Map은 자바 컬렉션 프레임워크(Collection Framework)에서 제공되는 인터페이스입니다. List는 순서가 있는 컬렉션으로 중복을 허용합니다. Set은 순서가 없는 컬렉션으로 중복을 허용하지 않습니다. Map은 키-값 쌍으로 데이터를 저장하는 컬렉션입니다.

List

  • 순서가 있으며, 요소들의 순서가 유지 됨
  • 데이터(값) 중복 허용 → 동일한 요소를 여러 번 포함 가능
  • 인덱스를 통해 저장 데이터에 접근이 가능
  • ArrayList, LinkedList, Vector 등

Set

  • 입력 순서를 유지하지 않으며데이터의 중복 허용하지 않음
  • 데이터에 null 입력 가능하나, 한 번만 저장하고 중복 저장을 허용하지 않음
  • 인덱스가 따로 존재하지 않기 때문에 Iterator를 사용하여 조회
  • 주로 멤버십 테스트, 고유한 값의 저장 등에 사용됨
  • HashSet, TreeSet, LinkedHashSet 등

Map

  • Key&Value 구조 → 키-값(key-value) 쌍으로 데이터를 저장하는 컬렉션
  • 키(key)는 중복될 수 없으며, 각 키는 하나의 값(value)과 연결됨
  • Value(값)는 중복을 허용
  • 키를 사용하여 값을 검색하거나 업데이트 가능
  • HashMap, TreeMap, LinkedHashMap 등

[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 )
자료 구조 List, Set, Map의 차이 / Set과 Map 비교



📌 HashMap과 Hashtable의 차이는 무엇인가요?

A.

  1. 동기화(Synchronization)

    : Hashtable은 여러 스레드가 동시에 접근하더라도 안전하게 동작하지만, HashMap은 동시에 여러 스레드에서 접근될 경우 동기화를 보장하지 않으며 별도의 동기화가 필요합니다.

  2. Null 허용

    : Hashtable은 키(key)와 값(value)으로 null을 허용하지 않지만, HashMap은 키와 값 모두 null을 허용합니다.

  3. 속도

    : 일반적으로 HashMap은 Hashtable보다 더 빠릅니다. HashMap은 동기화 처리를 하지 않기 때문에 Hashtable보다 더 가볍고 빠른 성능을 제공합니다.

  4. 상속 관계:

    : Hashtable은 Dictionary 클래스를 확장하고, HashMap은 AbstractMap 클래스를 확장합니다. 따라서 HashMap은 더 유연한 상속 구조를 가지고 있습니다.

HashMap

  • 맵이라는 것은 키(Key)와 값(Value) 두 쌍으로 데이터를 보관하는 자료구조
  • 키는 중복이 되지 않지만 값은 중복이 될 수 있음
  • 동기화가 되지 않고 Null값도 저장이 가능함
  • 스레드에 안전하지 않은(non-synchronized) 컬렉션 → 동시에 여러 스레드에서 접근될 경우 동기화를 보장하지 않으며, 별도의 동기화 처리가 필요
  • AbstractMap 클래스를 확장 → 더 유연한 상속 구조

Hashtable

  • 키와 값을 1:1형태로 가져가며 HashTable에 저장됨 → 키는 중복이 안 되지만 값은 중복을 허용
  • 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문
  • 키(key)와 값(value)으로 null을 허용하지 않음
  • 스레드에 안전한(synchronized) 컬렉션 → 여러 스레드가 동시에 Hashtable에 접근하더라도 안전하게 동작

https://crazykim2.tistory.com/589
https://crazykim2.tistory.com/587

0개의 댓글

관련 채용 정보