LALA's blog
[우테코 강의] 자바 List, Generic 본문
java.util.List Interface
- 자바는 배열과 같은 데이터를 효과적으로 관리하기 위해 배열 대신 List 를 제공한다.
- List 는 ArrayList, LinkedList 두 가지 종류가 있다.
- 일반적으로 ArrayList 를 가장 많이 사용한다.
- List 는 배열에서 지원하지 않는 많은 기능을 제공한다.
- 지금까지 배열을 사용했다면 배열 대신 List를 사용한다.
ArrayList
- 배열을 감싸서 사용할 수 있도록 기능을 제공해준다.
- Object[]
- 일급 컬렉션이라고 볼 수 있다.
- 사이즈도 동적으로 늘린다.
- 인덱스로 접근할 수 있다. O(n)
LinkedList
- Node 들을 가지고 있다.
- 앞 뒤가 연결되어 있다.
- 연결만 하면 되기 때문에 사이즈를 미리 정해둘 필요가 없다.
- 노드를 하나씩 건너가면서 탐색할 수 있다.
- 연결만 끊고 추가해주면 되기 때문에 추가/삭제가 용이하다.
Generic
- List 와 같이 다양한 종류의 데이터를 관리하는 경우 데이터의 타입을 특정 타입으로 고정할 수 있다.
장점
- 특정 타입으로 제한함으로써 타입 안정성을 제공한다.
- 타입 체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다.
List<Integer> integers;
List<Car> cars;
- 위처럼 여러 타입을 넣을 수 있다.
- 컴파일 타임에 타입을 정할 수 있게 해준다.
- 내부에서 타입이 지정되는 것이 아니라 외부에서 타입이 지정될 수 있다.
🤔. 만약 Generic 을 사용하지 않는다면?
List integers = new ArrayList():
integers.add(1);
// integers.add("1"); 옳은 타입이 들어가는 지 컴파일 시 알 수 없다.
Object o = integers.get(0);
if (o instanceof Integer) {
Integer value = (Integer) o; // casting 이 필요하다.
}
- 타입이 정해져 있지 않기 때문에 옳은 타입인지 컴파일 시 알 수 없다.
- casting 을 통해 체크하며 타입 변환을 해줘야한다.
- 다형성의 이점을 활용할 수 없다.
- 인터페이스가 아닌 구현체에 의존한다.
'개발 > 우아한테크코스' 카테고리의 다른 글
이것도 DTO 인가? (2) | 2022.03.18 |
---|---|
[레벨1] 어떤 값을 상수로 관리해야 할까? (3) | 2022.03.04 |
[우테코 강의] 문자와 문자열 ( String , StringBuilder , StringBuffer ) (0) | 2022.02.25 |
DTO 란? 장점은? (0) | 2022.02.17 |
[우아한테크코스 4기] 프리코스 3주차 회고 (0) | 2021.12.14 |