Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[4주차] 66. 컬렉션, 배열의 한계점을 보완하여 동적으로 객체들을 관리하기 위한 클래스들*** 본문

K-DigitalTraining 강의/1. Java

[4주차] 66. 컬렉션, 배열의 한계점을 보완하여 동적으로 객체들을 관리하기 위한 클래스들***

이대곤 2022. 6. 2. 12:38

* 배열의 한계점

  배열은 생성할 때 부터 크기가 고정되기 때문에 크기가 불분명한 다수의 객체를 저장하는데 문제가 있다.
  또한, 배열은 중간의 객체를 삭제하게 되면 해당 인덱스 공간이 비어 이빨 빠진 옥수수가 될 수 있다.
  이 때문에 새로운 객체를 저장하려면 어디가 비어있는지 확인하는 코드도 필요하다. 

 

* 컬렉션 프레임워크란? (http://www.tcpschool.com/java/java_collectionFramework_concept)

배열의 한계를 해결하고자 널리 알려져 있는 자료구조를 바탕으로 크기를 동적으로 변경해가며
객체들을 효율적으로 추가, 삭제, 검색하기 위해 표준화된 방법을 제공하는 클래스 집합을 의미한다.

그냥 '컬렉션'이라고 부르기도 하며 이 단어는 인터페이스와 이를 구현한 컬렉션 클래스를 모두 포함한다. 

 

컬렉션 프레임워크에는 주요 인터페이스로 List, Set, Map이 존재하며
List, Set은 모두 Collection 인터페이스를 상속받지만, 구조상의 차이로 Map은 별도로 정의되었다.

Collection 인터페이스에는 여러 메소드 들이 있는데 Iterator관련 추상 메소드를 포함하여
List 혹은 Set 인터페이스를 상속받은 구현 클래스들은 이를 완성시켜두어 Iterator를 사용할 수 있다. 

 

또한, 컬렉션 프레임워크는 java.util 패키지에 존재한다.

 

* 컬렉션 클래스란?

컬렉션 프레임워크에 속하는 인터페이스를 구현한 클래스를 의미한다.(컬렉션 프레임워크에 속하는 좁은 의미)

ArrayList, HashMap 등과 같이 클래스 이름에는 구현한 인터페이스의 이름을 포함한다.

Vector나 Hashtable과 같은 컬렉션 클래스는 예전부터 사용해 왔어서 기존 코드와의 호환을 위해 남겨두었는데
새로 추가된 ArrayList나 HashMap 클래스를 사용하는 것이 성능 면에서 더 나은 결과를 얻을 수 있다고 한다.

출처 : 생활코딩

* List, Set, Map 인터페이스 각각의 차이(List와 Set은 반대되는 느낌)

   List : 순서(index)가 있음 O, 중복 데이터 존재 O

   Set : 순서(index)가 없음 X, 중복 데이터 존재 X -> 이미 존재하는 중복데이터를 넣으려는 시도는 무시됨

   Map : key, value의 페어가 1개의 원소이며,
             순서(index)가 없음 X, key는 중복 X, value는 중복 O -> key값이 같은 pair 를 넣으려고 하면 덮어씌워버림

 

* List, Set, Map 인터페이스를 상속받아 구현된 하위 클래스들 사용시 주의점

  공간에 어떤 타입의 객체를 담을 지 지정해줘야 하는데 < > 안에는 클래스 이름만 들어올수가 있다.
  이 때문에 8가지 기본 데이터 타입 즉, int형 정수같은걸 저장하고 싶은 경우 레퍼클래스 이름 Integer 를 적어줘야 한다.

Comments