본문 바로가기
스터디/혼공학습단 10기 - 자바 & 머신러닝

[혼공학습단] 자바의 컬렉션 프레임워크 들어가기 앞서...

by 찌노오 2023. 8. 6.

기본미션

주차 진도 기본 미션
5주차 Chapter 13 직접 정리한 키워드 공유하기

 

13장 컬렉션 프레임워크에 나오는 키워드를 정리해보려고 한다.

굳이 책에 있는 내용을 정리하는 것보다는 좀 더 개념적이고 기초적인 부분위주로 정리해보려고 한다.

 

하지만 파이썬과 자바의 컬렉션 프레임워크를 나름대로 비교한 자료(List, Set, Map 컬렉션)는 아래 포스팅을 참고하면 좋을 것 같다.

 

2023.08.07 - [스터디/혼공학습단 - 자바] - [혼공학습단] 파이썬과 비교해보는 자바의 컬렉션 프레임워크

 

[혼공학습단] 파이썬과 비교해보는 자바의 컬렉션 프레임워크

배경 새로운 언어를 공부하면서 느끼고 있는 점인데, 프로그래밍 언어는 하나만 잘 파놓으면 다른 언어를 배우는 진입장벽이 확 낮아진다는 사실이다. 그러나, 하나를 잘 파놓기가 쉽지 않은 것

jinooh.tistory.com

 

1. 자바의 컬렉션 프레임워크(Collection Framework)을 이해하기 위한 자료구조 

 

컬렉션 프레임워크(Collection Framework)는 결국 자바의 자료구조(Data Structure)라고 할 수 있다.

 

 

자료구조는 무엇일까?

프로그램에서 데이터를 저장하고 조직화하는 방법을 정의한 구조나 형식을 말한다.

  • 데이터를 논리적인 방식으로 조직화하여 저장하고 관리하여 효율적으로 처리할 수 있음
  • 데이터 간의 관계와 의미를 명확하게 표현할 수 있음
  • 프로그램의 성능과 효율성을 높이는데 중요한 역할

따라서 자료구조를 이해하고 활용하는 것이 프로그래밍에서 매우 중요하다.

 

자료구조의 분류

자료의 특성과 크기, 사용법, 연산 종류 등에 따라 다양하게 분류할 수 있다.

 

데이터 구조 유형

배열(Array)

대표적인 선형 자료구조(Linear Data Structures)이다.

인접한 메모리 위치에 항목을 저장한다. 따라서 각 요소의 위치를 인덱스로 쉽게 계산하거나 검색할 수 있다.

 

순차적인 데이터의 삽입과 삭제가 비교적 간단하다는 특징을 가지고 있다. 그러나 비순차적인 데이터의 삽입과 삭제에는 시간이 많이 걸린다. 배열 중간에 데이터를 추가하려면, 빈자리를 만들기 위해 다른 데이터들을 복사해서 이동해야 하기 때문이다.

 

스택(Stack)

작업이 적용되는 선형 순서로 데이터를 저장한다. 후입선출(LIFO)구조로 되어 있다.

주로 함수 호출이나 재귀 알고리즘에 활용된다. 

좀 더 쉽게 찾을 수 있는 예시는 웹브라우저의 뒤로가기, 앞으로가기나 편집프로그램의 실행취소, 재실행 등이 있다.

 

큐(Queue)

스택과 같은 순서로 데이터를 저장한다. 그러나 작업 순서는 선입선출(FIFO)만 가능하다.

따라서 데이터의 삽입은 큐의 뒤, 삭제는 앞에서 이루어진다.

주로 작업 대기열, 프로세스 스케줄링에 활용된다.

 

연결 리스트(LinkedList)

데이터 요소와 다음 요소를 가르키는 링크로 구성된 자료구조이다.

 

새로운 데이터를 추가할 때 새로운 요소를 생성하고 추가하고자 하는 위치와 이전 요소와 다음 요소의 참조만 변경해주면 되기 때문에 삽입과 삭제가 효율적이다.

또한 메모리를 효율적으로 사용할 수 있다. 

 

 

 

트리(Tree)

계층 구조를 표현하는 비선형 자료구조(Non-Linear Data Structures)이다.

루트 노드와 하위 노드로 구성되며, 각 노드는 하나의 부모 노드와 여러 개의 자식 노드를 가질 수 있다.

이진 트리(Binary Tree), 이진 검색 트리(Binary Search Tree), AVL트리  등이 있다.

 

힙(heap)

효율적인 우선순위  큐를 구현하는데 주로 사용되는 이진 트리 기반의 자료구조

 

 

2. 컬렉션 프레임워크를 이해하기 위한 선수 지식

메모리 관리(Memory Management)

chapter 5에서 이미 학습한 내용이지만, 이번 컬렉션 프레임워크 학습 전 다시 볼 필요가 있어서 정리했다.

 

힙 영역(Heap Area)

프로그램 실행 중 동적으로 할당되는 객체들이 저장되는 메모리 영역을 말한다.

힙 영역은 자바 가상 머신(JVM)의 메모리 관리에서 중요한 부분을 차지하며, new 키워드를 사용하여 객체를 생성할 때 해당 객체는 힙 영역에 할당된다.

스택 영역 (Stack Area)
스택 영역은 메서드의 호출과 관련된 데이터를 저장하는 메모리 영역.

메서드가 호출될 때 스택 프레임이 생성되고, 메서드의 지역 변수와 매개변수가 저장된다.

 

가비지 컬렉션(Garbage Collection)

프로그램이 동적으로 할당된 메모리 중에서 더 이상 사용되지 않는 객체들을 자동으로 식별하고 해제하는 과정을 말한다.

이를 통해 메모리 누수(Memory leak)를 방지하고 메모리 관리를 간편하게 할 수 있다,

 

 

3.  기타 키워드

E타입 파라미터

E타입 파라미터(또는 Element 타입 파라미터)는 제네릭 프로그래밍에서 사용되는 개념으로, 클래스나 메서드가 다양한 데이터 타입을 처리할 수 있도록 일반화된 타입을 나타내는 데 사용된다.

 추가로 Map과 같은 컬렉션에서는 키(Key) 와 값(Value) 쌍으로 데이터를 저장거나 관리하여 V타입은 값(value), K타입은 키(Key)가 된다. 

 

해시(hash) 함수

데이터를 해시 코드로 매핑하여 데이터를 저장하거나 검색할 때 사용하는 인덱스로 활용하는 함수.

입력값(데이터)에 대해 일관된 크기의 해시 코드를 생성하며, 이 해시 코드를 사용하여 데이터를 효율적으로 저장하고 검색한다.

 

컬렉션 프레임워크에서는 HashMap, HashSet, Hashtable이 있다.

Map, Set의 하위 개념으로 주요 특징은 동일하나, 데이터를 저장하고 검색할 때 사용하는 방시고가 목적이 해시 기반으로 이루어진다는 차이점이 있다.

 

 

References

https://www.techtarget.com/searchdatamanagement/definition/data-structure

https://soliloquiess.github.io/study/2021/03/20/java_%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0.html

https://en.wikipedia.org/wiki/Data_structure

 

 

 

 

 

** 사실과 다른 내용이 있을 수 있습니다. 언제든지 피드백 부탁드립니다!

반응형

댓글