Ocean_
꾸준한 프로그래밍
Ocean_
전체 방문자
오늘
어제
  • 분류 전체보기 (174)
    • About Me (4)
    • 우아한테크코스 (27)
    • C & LINUX (50)
    • Operating System (12)
    • Database (25)
    • Computer Vision (0)
    • Problem Solving (0)
      • Programmers (0)
      • BOJ (0)
    • 코코코딩공부 (44)
      • Spring (12)
      • JAVA (14)
      • 디자인 패턴 (4)
      • 책 읽기 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 운영체제
  • 1259
  • 블랙잭
  • Operating System
  • 트랜잭션
  • 데이터 조작어
  • bean
  • C
  • 인덱스
  • 우테코5기
  • 우아한테크코스5기
  • 프로세스
  • DB
  • SIGINT
  • 우아한테크코스
  • OS
  • signal
  • Spring
  • 원시값 포장
  • Linux
  • 리눅스
  • 백준
  • OperatingSystem
  • 우아한형제들
  • BOJ
  • 정규화
  • 우테코 체스
  • 자바
  • 우테코
  • C++

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ocean_

꾸준한 프로그래밍

코코코딩공부/JAVA

[JAVA] 일급 컬렉션

2023. 2. 25. 14:40

들어가며

우테코 미션을 진행하면서 일급 컬렉션에 대해서 엄청엄청 많이 들어보았다. 그래서 정리를 해보고자 한다.


일급 컬렉션

일급 컬렉션이란 값 객체(Value Object)를 포함하고 있는 컬렉션이다. 값 객체란 값 그 자체로 의미가 있으며, 변경 불가능하다는 특징을 가지고 있는 것이다. 일급 컬렉션은 이러한 값 객체들을 모아서 하나의 객체로 다루는 것을 의미한다.

Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 한다.

 

일급 컬렉션의 장점

  • 코드 가독성의 향상
    • 값 객체가 포함된 컬렉션을 변수로 사용하는 것보다, 일급 컬렉션으로 묶어서 사용하는 것이 가독성이 더 좋다.
  • 의미 전달력의 향상
    • 일급 컬렉션을 사용하면, 컬렉션의 용도와 의미를 명확하게 전달할 수 있다.
  • 불변성의 보장
    • 일급 컬렉션에 포함된 값 객체들은 불변 객체이기 때문에, 컬렉션 내의 값이 변경되는 것을 방지할 수 있다.

class의 역할이 무거워 지고, 중복코드가 많아진다. 이를 일급 컬렉션을 통해 해결하면 각각이 상태와 행위를 관리할 수 있기 때문에 좋아진다.

 

개인적으로 느낀 장점

private final List<Car> cars;

public Car getCar(int index){
	return cars.get(index).getCar();
}

라는 코드가 있을때 우리는 cars.get(index).getCar() 라는 방법으로 Car 객체를 가져올 수 도 있을 것이다. 근데 Car 라는것은 Cars에서만 사용할 수 있게 추상화를 하여 cars.getCar(index)를 통해 간단화 할 수 있다고 생각한다.

 

일급 컬렉션 구현 방법

일급 컬렉션은 다음과 같은 방법으로 구현할 수 있다.

public class FirstClassCollection {
  private final List<ValueObject> values;

  public FirstClassCollection(List<ValueObject> values) {
    this.values = Collections.unmodifiableList(values);
  }

  public List<ValueObject> getValues() {
    return values;
  }
}

위의 코드에서 List 대신 Set 또는 Map 등의 컬렉션을 사용할 수도 있다.

이처럼 일급 컬렉션은 값 객체들을 모아서 하나의 객체로 다루는 것을 의미하며, 가독성, 의미 전달력, 불변성 보장 등의 장점이 있다.

'코코코딩공부 > JAVA' 카테고리의 다른 글

[JAVA] 제네릭 Generic  (1) 2023.03.04
[JAVA] 예외 처리  (0) 2023.02.26
[JAVA] 원시값 포장  (0) 2023.02.25
[JAVA] equals와 hashCode를 Override 해야하는 이유  (0) 2023.02.25
[JAVA] 정규표현식  (0) 2023.02.14
    '코코코딩공부/JAVA' 카테고리의 다른 글
    • [JAVA] 제네릭 Generic
    • [JAVA] 예외 처리
    • [JAVA] 원시값 포장
    • [JAVA] equals와 hashCode를 Override 해야하는 이유
    Ocean_
    Ocean_
    dongVeloper

    티스토리툴바