알고리즘을 위해 Collection 을 더 공부해야겠다 생각이 들어 작성합니다
ArrayList
요소를 순차적으로 저장하고 조회하는데 효율적.
요소의 개수가 동적으로 변경되는 상황에 사용 --> int[] 대신 ArrayList<Integer>
LinkedList
요소 간의 링크를 통해 연결되는 구조, 요소의 추가 및 삭제가 빈번한 상황에 유용.
요소를 중간에 삽입하거나, 삭제하는 경우에 사용.
HashSet
중복을 허용하지 않는 요소의 모임을 관리.
순서를 보장하지 않으며 , 검색속도가 빠르기때문에 요소의 중복 여부를 확인하는 용도로 사용
TreeSet
요소들이 정렬된 상태로 저장되는 자료구조. 요
소들이 항상 정렬된 상태를 유지해야 하는 경우에 적합.
예를 들어, 정렬된 순서대로 데이터를 검색해야하는 경우에 사용됨.
HashMap
key-value 쌍을 저장하고 관리하는 자료구조.
특정 키를 사용하여 값을 빠르게 검색하고 조회할 수 있음
TreeMap
요소들이 키를 기준으로 정렬된 상태로 저장되는 구조 정렬된 순서로 데이터에 접근 하는 경우 사용.
상황별 어떤 Collection 을 써야 할지 예시
- 학생들의 성적을 저장하고 조회해야 하는 경우
- HashMap을 사용하여 학생의 이름을 키(Key)로, 성적을 값(Value)로 저장할 수 있습니다. 특정 학생의 성적을 빠르게 조회할 수 있습니다.
- 게시판에 게시물을 작성하고 조회해야 하는 경우
- ArrayList를 사용하여 게시물을 순차적으로 저장하고, 게시물 번호를 인덱스로 활용하여 조회할 수 있습니다. 새로운 게시물을 작성할 때는 ArrayList의 맨 뒤에 추가하면 됩니다.
- 온라인 쇼핑몰에서 상품 정보를 관리해야 하는 경우
- HashSet을 사용하여 장바구니 저장시 상품의 고유한 식별자를 저장할 수 있습니다. 중복된 상품을 방지하고, 특정 상품의 유무를 빠르게 확인할 수 있습니다.
- 로또 번호 생성기
- TreeSet을 사용하여 생성된 로또 번호를 정렬된 상태로 저장할 수 있습니다. 중복된 번호를 제외하고, 정렬된 번호로 결과를 제공할 수 있습니다.
- 실시간 주식 가격 정보를 저장하고 조회해야 하는 경우
- LinkedList를 사용하여 주식 가격 정보를 시간순으로 저장하고, 가장 최근의 가격 정보를 빠르게 조회할 수 있습니다.