배열과 유사한 순차적인 자료구조
현재 데이터에 다음 데이터를 읽을 수 있는 정보를 추가한 것으로 불연속적으로 존재하는 데이터를 서로 연결할 수 있는 방법을 제공한다
데이터를 Key:Value(키:값)의 쌍으로 저장하는 방식 , 실제 데이터가 저장되는 형태는 내부구조에 따르며
Key
를 부여Key
값을 알면 언제든 쉽게 데이터를 찾을 수 있음객체형
이 들어갈 수 있어 복잡한 데이터 처리가 가능 ex) 학생들의 성적을 관리하는 자료구조를 만들 때 학생별 성적을
List
로 만들고학번을 Key
로 하는Map
을 만들어List
를 저장하면 학번을 통해 손쉽게 성적 관리가 가능
자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화 한 것중 하나가 Iterator
List , Set 의 상위 인터페이스 , 즉 List와 Set 을 구현한 모든 클래스들은 Collection 인터페이스의 메서드를 사용할 수 있으므로 동일한 방법으로 데이터를 다룰 수 있음
retailAll() 의 경우 인자의 데이터를 제외한 나머지 데이터 모두 삭제하는 메서드
clear() : 모든 데이터 삭제
특정 위치의 데이터를 직접 선택할 필요없이 순차적으로 모든 데이터를 사용하는 경우 단순하게 for문만 사용
특정 위치의 데이터를 직접 다루고자 한다면 앞에서 다룬 toArray() 메서드를 이용해 배열로 변환해 사용하는 방법 사용
List와 Set은 모두 Collection 인터페이스를 상속받고 있으며 List의 구현 클래스들은 AbstractList 클래스를 상속 받는 구조입니다.
배열과 유사한 자료구조 , 중복이 허용되면서 저장순서가 유지되는 구조 제공
구현 클래스로는 Vector, ArrayList, LinkedList 가 있고 가장 널리 사용되는 것은ArrayList
이다
가장 대표적인 List구현 클래스
내부적으로 배열 구조, 중간에 데이터가 추가되거나 삭제될 경우 기존 데이터를 복사해 새로운 구조를 만들어야 하기 때문에 이럴 땐 LinkedList 사용 권장
기본적으로
Collections.sort(List<T> list)
를 사용 , 이 경우에는 내림차순으로 정렬 이루어지고 원래 List 객체는 원소들이 정렬된 결과로 바뀐다 오름차순 정렬을 위해서는Comparator
를 추가로 인자로 작성해야함
sort(Comparator<? super E> c)
메서드 이용
List와 유사하지만 중복이 허용되지 않고 기본적으로 순서가 유지되지 않는다
구현 클래스로는HashSet
,LinkedHashSet
,EnumSet
,TreeSet
,CopyOnWriteArraySet
등이 있으며 가장 널리 사용되는것은HashSet
입니다. 순서가 필요한 경우LinkedHashSet
클래스나SortedSet
인터페이스를 구현한TreeSet
등을 사용할 수 있습니다
LinkedHashSet 의 경우
Iterator 가 필요한 경우
TreeSet
: SortedSet 구현한 클래스 , 오름차순으로 데이터를 정렬 해준다
Collection 인터페이스를 상속받지 않으며 , 그 자체로 인터페이스로 여러 Map 구현 클래스를 가지고 있습니다 , 가장 대표적인 클래스는 HashMap 이다
Map에 값을 전체 출력하기 위해서느 entrySet() , KeySet() 메소드를 사용하면 되는데 entrySet() 메서드는 Key 와 Value의 값이 모두 필요한 경우 사용하고 , keySet() 메서드는 key의 값만 필요한 경우 사용
Iterator 인터페이스를 사용할 수 없는 컬렉션인 Map에서 Iterator 인터페이스를 사용하기 위해서는 Map에 entrySet() , KeySet() 메소드를 사용하여 Set 객체를 반환받은 후 Iterator 인터페이스를 사용한다