📍일급 컬렉션
📍Collection 하위 인터페이스
1️⃣List 인터페이스
: 중복을 허용하면서 저장 순서가 유지되는 컬렉션을 구현하는 데 사용된다.
- ArrayList
: 단방향 포인터 구조 - LinkedList
: 양방향 포인터 구조 (이중 연결리스트) - Stack
- Vector
2️⃣set 인터페이스
: 중복을 허용하지 않고 저장 순서가 유지되지 않는 컬렉션을 구현하는 데 사용된다.
- HashSet
- 가장 빠른 임의 접근 속도를 가짐.
- 순서를 예측할 수 없음.
- TreeSet
- 정렬 방법을 지정할 수 있음.
3️⃣Map 인터페이스
: 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션을 구현하는 데 사용된다. 키는 중복될 수 없지만, 값은 중복 가능하며 순서가 없다.
- HashTable
- HashMap보다 느리지만 동기화 지원
- null 값이 들어갈 수 없음
- HashMap
- 중복과 순서를 허용하지 않음
- null 값이 들어갈 수 있음
- SortedMap
- 정렬된 Map
📍collection과 배열의 차이
※ 가장 큰 차이로는 배열은 정적 메모리 할당, 컬렉션은 동적 메모리 할당
결론적으로 데이터를 조작해야 할 때는 컬렉션을 사용하는 것이 유용하고, 데이터를 조작하지 않아도 되는 간단한 로직에서는 배열을 사용하는 것이 더 빠른 접근이 가능하므로 유용할 것 같다.
📍 일급 컬렉션
📍추가적으로
우테코 프리코스 2주차 미션에서 자동차 객체의 중복된 이름이 있으면 안되고, 이름은 5자리 이하의 영어 이름이어야 한다는 조건이 있었다. 이 조건들을 따로 validation 처리 해줬는데, 일급 컬렉션으로 만들어 특정 조건으로 만들 수 있는 새로운 자료구조를 생성했으면 좋았을 거 같다.
public class Cars {
// 멤버 변수 하나만
private List<Car> carList;
public Cars(List<Car> carList) {
validateCarName(carList);
validateDuplicateName(carList);
this.carList = carList;
}
...
}
'백엔드개발 > Java' 카테고리의 다른 글
[Java] 자바 스트림(Stream) (0) | 2024.11.01 |
---|---|
[Java] 정적(Static) 멤버의 사용 (1) | 2024.10.31 |
[JAVA] StringBuilder (2) | 2024.10.12 |
[JAVA] BufferedReader와 Bufferedwriter (0) | 2024.10.12 |
[JAVA] 멘토씨리즈 자바 Chapter7 (3) | 2024.10.12 |