외부활동/JSCODE 자바

자바 3주차: 컬렉션 기초(작성 중)

사랑우주인 2025. 1. 17. 18:01

JCF

Java Colleciion Framework

프레임워크?

표준화된 클래스와 인터페이스의 집합 -> 통일된 API 제공

통일된 API?

- 데이터를 다루기 위한 버튼

- 동일 인터페이스에 구현체가 달라도 add(), remove() 같은 이름으로 같은 방식으로 동작

배경?

자주 쓰이는 데이터 저장 방식을 표준화된 설계도를 만들자.

한마디로 JCF는?

다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합

 

JCF 계층구조

JCF는 Collection, Map 인터페이스

Collection은 다시 List, Queue, Set 인터페이스

List 인터페이스

- 순서가 있는 데이터 집합(데이터 중복 허용)

-  List 구현체는 ArrayList, LinkedList, Vector 

 

ArrayList

- 크기가 가변적인 선형 리스트, 인덱스를 이용하여 내부 요소를 관리

- 저장 용량이 존재(capacity)하여, 이 용량을 넘어서면 자동으로 용량 증가

 

LinkedList

- 노드는 데이터와 포인터를 가지고 있고, 노드끼리 한줄로 연결되어 있는구조

- 포인터는 이전 노드와 다음 노드와의 연결을 담당

- 노드 추가/삭제 시 앞뒤 링크만 변경되고 나머지 링크는 변경 X

 

ArrayList와 LinkedList는 언제 사용할까?

ArrayList는 접근 시간이 빠르지만(인덱스를 이용하기 때문에) 삽입 및 삭제가 느리고, LinkedList는 접근 시간이 느리지만 삽입 및 삭제가 빠르다. 따라서, 리스트의 시작 또는 끝 부분에서 삽입과 삭제가 빈번한 Queue 같은 경우 LinkedList를 사용하고, 그 외에는 ArrayList 사용하는 편이다.

 

 

 

꼬리 질문

크게 Collection와 Map로 왜 나눌까?

ArrayList는 용량 증가하면 얼만큼 증가? 얼만큼 용량이 존재? 초기화할 때 지정 또는 지정 하지 않아도 되는지?

LinkedList의 구조는?

ArrayList는 삽입 삭제가 왜 느리지? LinkedList는 왜 접근 시간이 느리지?