자료구조에 List, Set, Map이 존재한다.

1. List
- 순서가 있고 중복을 허용하는 자료구조
- 인덱스로 원소 접근
- 배열과 다르게 크기가 가변적
List<자료형> 리스트 명 = new ArrayList(or LinkedList)<자료형(생략가능)>();
import java.util.ArrayList; // ArratList 선언 시
import java.util.LinkedList; // LinkedList 선언 시
import java.util.List;
1) 리스트의 기능
- 삽입: List.add(값)
- 중간 삽입: List.add(index, value); : index: 중간에 넣을 인덱스(배열 인덱스), value: 중간에 넣을 값
- 치환: List.set(index, value); : 중간 삽입과 비슷하게 index는 치환할 값 자리에 인덱스이고 value는 치환할 자리에 값
- 삭제: List.remove(index); : 인덱스 위치에 있는 값을 삭제
- 전체 삭제: List.clear(); 모든 요소를 삭제
- 출력: List.get(index) : 인덱스 위치에 있는 값을 출력
- 사이즈: List.size() : 리스트에 크기
2) LinkedList와 ArrayList의 차이
2-1) LinkedList
- 양방향 포인터 구조
- 데이터의 삽입, 삭제가 빠름
- 검색이 느림
2-2) ArrayList
- 단방향 포인터 구조로 데이터 순차적 접근에 강점
- 배열 기반으로 데이터 삽입, 삭제가 느림
- 데이터 검색이 빠름
2. Set
- 집합이랑 비슷함
- 순서가 없고 중복을 허용하지 않음
Set<자료형> set 명 = new HashSet(or TreeSet)<>();
1) Set의 기능
- 삽입: Set.add(값);
- 제거: Set.remove(값);
- 크기: Set.size(); : Set에 크기를 반환
- Set에 요소가 있는지 없는지 판단: Set.isEmpty(); (없으면 True, 있으면 False를 반환)
- 지정한 값이 Set 안에 있는지 판단: Set.contains(값); (있으면 True, 없으면 False를 반환)
3. Map
- Key와 Value의 쌍으로 이루어져 있어 검색을 목적으로 많이 사용
Map<자료형, 자료형> 맵 명 = new HashMap(or Hashtable)<자료형, 자료형(생략 가능)>();
1) Map의 기능
- 삽입: Map.put(키(key), 값(value);
- 수정(치환): Map.put(기존 키(key), 새로운 값(value)); :
- 꺼낼 때: Map.get(키(key));
- 삭제: Map.remove(키(key));
- size: Map.size(); : Map에 사이즈를 반환
- 키(key) 존재 여부: Map.containsKey() : 키(key)가 존재하는지 판단 존재하면 True 존재하지 않으면 False
- 값(value) 존재 여부: Map.containsValue() : 값(value)이 존재하는지 판단 존재하면 True 존재하지 않으면 False
3-1) HashMap
- Map과 비슷하게 Key Value쌍으로 이루어져있지만 null을 허용함
HashMap hm = new HashMap(); // 타입 설정x Object 입력