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는 왜 접근 시간이 느리지?
'외부활동 > JSCODE 자바' 카테고리의 다른 글
자바 4주차: 동시성 프로그래밍 기초(작성 중) (0) | 2025.01.19 |
---|---|
자바 2주차: (작성 중) (0) | 2025.01.06 |
자바 1주차: 자바 객체 지향 (0) | 2025.01.03 |
자바 1주차: 자바 기본 (0) | 2025.01.03 |