[Java] 14_컬렉션(Collection)의 개요

2022. 8. 19. 10:08·📗 self-study/📗 KH정보교육원 당산지원

14_컬렉션(Collection)

 

 * 컬렉션(Collection)
자료 구조가 내장되어 있는  클래스로 자바에서 제공하는 "자료 구조"를 담당하는 "프레임워크"
 
=> 자료 구조: 방대한 데이터들을 효율적 (구조적)으로 다를 때 필요한 개념
=> 프레임워크: 효율적인 기능들이 이미 정의되어 있는 틀
 
정리해 보면
데이터들이 새로이 추가되거나, 삭제가 되거나, 수정이 되는 기능 (알고리즘) 들이
이미 정의되어 있는 틀이 있음 == 컬렉션
=> 다량의 데이터들을 관리하고자 할 때 배열을 가지고 충분히 사용했었지만
     그 배열의 단점들을 보완한 것이 "컬렉션"
 
*배열과 컬렉션의 차이점
- 배열의 단점
1. 배열을 쓰고자 할 때 먼저 크기를 지정해야 함
   => 한번 지정된 크기는 변경이 불가함
   새로운 값을 추가하고자 할 때 크기가 오버될 경우 새로운 크기의 배열을 만들고 기존의 내용물을 복사해 주는 코드를 직접 짜야 함
2. 배열 중간 위치에 새로운 데이터를 추가하거나 삭제하는 경우
     삭제 시 기존의 값들을 앞으로 땡겨 주거나, 추가 시 뒤로 한 칸씩 밀어 주는 코드를 직접 짜야 함
3. 한 타입의 데이터들만 저장 가능함
 
- 컬렉션의 장점
1. 크기에 제약이 없음
   => 크기 지저을 해 줄 필요도 없고, 만약 크기 지정을 하더라도 알아서 크기가 늘어나면서 새로운 데이터들이 추가됨
   이미 메소드로 해당 기능들이 다 만들어져 있음! (호출만 잘해 주면 됨)
2. 중간에 값을 추가하거나 삭제하는 경우 값을 앞 또는 뒤로 당겨 주는 코드들이 이미 메소드에 다 정의되어 있음
3. 기본적으로 여러 타입의 데이터들을 저장할 수 있음
   => 단, 객체 형식으로만 저장 가능 (Wrapper 클래스 형태로 AutoBoxing 해서 쓰면 됨)
   => 또한 "제네릭" 설정을 통해서 한 타입의 데이터들만 담는 것도 가능 
 
단지 방대한 데이터들을 담아만 두고 조회만 할 목적이라면 => 배열만 써도 무방
방대한 데이터들이 빈번하게 추가, 삭제, 수정될 것 같다면 -> 컬렉션을 쓰는 게 더 이득
 

배열(Array) 컬렉션(Collection)
같은 자료형의 값들을 여러 개 보관
다른 자료형의 값들을 여러 개 보관
( == 종류를 따지지 않는 배열)
문제점 장점
한 번 크기를 지정하면 변경할 수 없음
(공간 크기가 부족하면 에러 발생 => 할당 시 넉넉한 크기로 할당해야 하기 때문에 메모리 낭비)
저장하는 크기의 제약이 없음
배열에 기록된 데이터에 대한 중간 위치의 추가, 삭제가 불가
(추가, 삭제할 데이터부터 마지막 기록된 데이터까지 하나씩 뒤로 밀어내고 추가해야 함 => 복잡한 알고리즘)
추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결됨
한 타입의 데이터만 저장 가능 여러 타입의 데이터를 저장 가능
(단, 객체만 저장할 수 있기 때문에 필요에 따라 기본 자료형을 저장해야 하는 경우에는 Wrapper클래스를 사용해야 함)

 

컬렉션: 데이터를 한 번에 모아서 저장

=> for문, if문 없이 간단하게 추가, 삭제, 정렬 등의 기능 처리 가능해짐

=> 자료 구조적 알고리즘을 구현할 필요가 없음

 

자료 구조: 방대한 데이터를 어떻게 잘 보관할지를 연구하는 학문

=> Java에서는 컬렉션이 자료 구조를 담당하는 프레임워크

(API는 프레임워크의 하위 호환 버전 정도임 / API도 필요한 자료를 제공해 주니까)

 

Collection(부모 클래스)
=> 인터페이스
Collection의 자식 클래스 아님!! 
List (자식 클래스 1) Set (자식 클래스 2) Map
컬렉션이라는 인터페이스를 가지고 와서 추상 필드, 추상 메소드를
함께 오버라이딩 할 것이므로 둘의 구조가 비슷할 것임을 예상 가능함
List, Set과 구조가 다를 것임을
예상 가능함
  공을 복주머니에 넣어서 한 뭉텅이로 보관  
순서를 유지하고 저장 순서를 유지하지 않고 저장 키와 값의 쌍으로 저장 
중복 저장 가능 중복 저장 안 됨 키는 중복 저장 안 됨
단일값을 1방에 1개씩
키와 값은 친구친구!
1방에 2개

 

*컬렉션의 3가지 분류
- List계열: 담고자 하는 값(Value)만 저장 / 값 저장 시 순서가 유지됨 (index 개념 있음) / 중복값 허용
     예) ArrayList, Vector, LinkedList => ArrayList가 가장 많이 쓰임
- Set 계열: 담고자 하는 값(Value)만 저장 / 값 저장 시 순서 유지 X (index 개념 없음) / 중복값 허용 X
     예) HashSet, TreeSet
- Map 계열: 키(Key) + 담고자하는 값(Value) 세트로 저장 / 값 저장 시 순서 유지 X (index 개념 없음) / key의 중복값 허용 X, value는 중복값 허용
     키: 값을 찾아가기 위한 식별 용도이므로 중복될 수 없음
    예) HashMap, Properties

저작자표시 (새창열림)
'📗 self-study/📗 KH정보교육원 당산지원' 카테고리의 다른 글
  • [Java] 14_컬렉션(Collection - MVC패턴)
  • [Java] 14_컬렉션(Collection - List의 메소드, 제네릭)
  • [8/18 시험 대비]
  • [Java] 13_네트워크(Network)
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[Java] 14_컬렉션(Collection)의 개요
상단으로

티스토리툴바