백엔드개발/Java

[Java] 일급 컬렉션

aaahyunseo 2024. 10. 30. 15:05

📍일급 컬렉션

 


📍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