Collection
- 참조형 변수만 저장
- List : 데이터 중복 허용(~ Array ; 정적 배열(크기 고정)) ; 동적 배열(크기가 가변적)
- 동적이기에 초기화 필요 없음
- ArrayList
- ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 // .add([num], value) : 추가 (num 입력시 num번째에 추가) // .get(num) : num번 째 값 반환 // .set(num, value) : num 번 째 value로 값 수정 // .remove(num) : num 번 째 삭제 // .toString() : 문자열로 반환 -> toString을 안하면 arrayList type으로 출력 // .clear() : 전체 삭제 // 궁금증 // .set은 value 여러개가 불가 그럼 .add는? 불가능
- LinkedList
- 메모리에 남는 공간에 나누어서 값을 나누어 담음 → 속도 느림
- 값 추가, 삭제는 빠름
- 전체적인 기능은 ArrayList 와 동일
- Stack : LIFO
- 최근 데이터 나열에 용이, 중복처리에도 좋음
Stack<Integer> intStack = new Stack<Integer>(); // 선언 // .isEmpty() : 값이 비어있는지 확인 // .push(value), .pop() // .peak() : 맨 윗 값 조회 // .size() : Array.length() 와 같은 기능
- Queue : FIFO 구조
- .add(value); 추가, .peek(); 제일 아랫값 조회, .poll(); ~pop
- Queue<Integer> queue = new LinkedList<Integer>(); // queue는 인터페이스 이기에 LinkedList를 통해야 함(생성자가 없음)
- Set : 순서 없고 데이터 중복 안됨(~집합)
- Queue와 동일하게 생성자 없음
- HashSet은 생성자가 있기에 생성 가능
- HashSet : Hash Table, 대표
- TreeSet : tree형 구조, HashSet특성 + 오름차순 → 정렬하고 싶을 경우 사용
- LinkedHashSet : 중복 불가, 입력한 순서로 데이터 저장
- 추가 순서 || 최근 접근 순서로 접근 가능
// index를 지원하지 않아서 for문 사용해도 요소 엑세스 불가 // 참조 타입만 지원 Set<Integer> set = new HashSet<Integer>(); // .contains(type data) : 가지고 있는지 확인 // .add시 중복된 값을 덮어 씀/ .remove(삭제) - Map : (key: value) ~Object
- Object 와 비슷, key로 value 조회 가능
- HashMap: HashSet과 비슷, key : value → null값 허용
- TreeMap : key 기준 정렬, 오름차순(저장시간 오래 걸림)
Map<String, Integer> map = new HashMap();