Java에서는 데이터를 보다 효율적으로 데이터를 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지로 제공하고 있습니다. 이것들을 컬렉션 프레임워크라고 하며, 그중에서도 중요한 인터페이스로는 List, Set, Map이 있습니다.
List
List는 배열과 마찬가지로 객체를 인덱싱 합니다. 배열과 다른 점은 크기의 용량이 자동으로 늘어나거나 삭제되는 부분입니다. 그리고, 오브젝트를 각 인덱스에 보존할 때는, 직접 보존하는 것이 아니라, 보존하는 오브젝트가 저장되어 있는 주소의 번지를 보존합니다. 따라서 null도 저장하고 중복되는 데이터를 허용하고 저장할 수 있습니다. 다음은 List 인터페이스를 구현하는 클래스입니다.
・ArrayList : 순서가 지정된 목록에 사용되는 데이터 구조.
・LinkedList : ArrayList와 같이 순서가 있는 데이터 구조이지만, 전과 뒤의 요소의 링크를 가지고 있어 데이터의 추가, 삭제가 빈번하게 행해질 때 유리한 데이터 구조.
Set
List와 다른 점은 순서가 보증되지 않고 중복 데이터가 허용되지 않는 점입니다. 따라서 null도 한 번만 저장할 수 있습니다. 또한 List의 경우 get메소드로 인덱스의 번호를 이용해 데이터의 검색이 가능합니다만, Set의 경우는 데이터의 검색을 하는 메소드가 제공되지 않기 때문에 Iterator라고 하는 반복자 메소드를 이용해, 데이터의 모음을 하나씩 취득할 필요가 있습니다. 다음은 Set 인터페이스를 구현하는 클래스입니다.
・HashSet : 순서 보장되지 않고 중복도 허용되지 않는 수학 집합과 유사한 구조.
・LinkedHashSet : 앞과 뒤의 요소 링크를 유지하기 때문에 순서가 보장되는 HashSet.
Map
Map은 키와 값을 쌍으로 데이터를 관리하는 데이터 구조입니다. 키와 값의 각 컬렉션의 순서는 보장되지 않고, 또한 데이터를 보존할 때에 키는 중복이 허용되지 않습니다만, 값은 중복이 허용됩니다. Map을 사용함에 있어서 주의가 필요한 점은 만약, 이미 존재하는 키로 값을 보존하는 경우는 이미 존재하는 키의 값은 없어져, 새로운 값으로 데이터가 저장됩니다. 다음은 Map 인터페이스를 구현하는 클래스입니다.
・HashMap : 키와 값을 쌍으로 저장하며 키 중복은 허용되지 않으며 각 컬렉션의 순서는 보장되지 않는 데이터 구조입니다.
・LinkedHashMap : 앞과 뒤의 요소 링크를 유지하기 때문에 순서가 보장되는 HashMap.
정리
특징 | 사용에 적합한 상황 | |
List | ・인덱스로 관리 ・순서〇 ・중복〇 |
・중복이 존재하고 순서가 중요한 데이터를 저장할 시 |
Set | ・순서× ・중복× |
・중복이 존재하지 않으며 순서에 의미가 없는 데이터를 저장할 시 ・contains 메소드를 자주 이용하여 데이터의 존재 유무를 판단할 때 (Hash 테이블을 이용하기 때문에 O(1)로 데이터의 존재 유무를 알 수 있다) |
Map | ・키와 값을 페어로 관리 ・순서× ・키 중복× ・값 중복〇 |
・키와 값이 페어인 데이터를 저장할 시 |
'JAVA' 카테고리의 다른 글
String.valueOf() 와 Integer.toString() 의 차이 (0) | 2024.05.01 |
---|---|
String, StringBuffer, StringBuilder의 차이점 (0) | 2024.04.24 |
Stream (0) | 2022.07.25 |
람다식(Lambda Expression) (0) | 2022.07.17 |
enum (0) | 2022.01.16 |