collection
자료구조.
- 데이터 값의 모임, 데이터 간의 관계
- 데이터에 적용할 수 있는 함수나 명령
배열
- 가장 기본적 자료 구조
- homogeneous collection => 동일한 데이터 타입만 관리 가능.
- Polymorphism
- Object를 이용하면 모든 객체 참조 가능
- 담기엔 편리, 빼낼 땐 Object로만 가져올 수 있음
- 런타임에 실제 객체 타입 확인 후 사용.. 번거로움..
- Generic을 이용한 타입 한정
- 컴파일 타임에 검사해서 형변환 번거로움 제거.
Collection Framework
- java.util 패키지
- 다수의 데이터를 쉽게 처리하는 방법 제공 => DB처럼 CRUD 중요
- Iterable => Collection => List, Set / Map
List
- 입력 순서 O
- 데이터 중복 O
ex) ArrayList, LinkedList
Set
- 입력 순서 X
- 데이터 중복 X
ex) HashSet, TreeSet
Map
- key 와 value 쌍으로
- 입력 순서 X
- key 중복 X, value 중복 O
ex) HashMap, TreeMap
-----
Collection interface
- 추가
- add(E e)
- addAll(Collection<? extends E> c)
- 조회
- contains
- containsAll
- equals()
- isEmpty()
- iterator()
- size()
- 삭제
- clear()
- removeAll()
- retainAll()
- 수정
- 기타
- toArray()
-----
List
Vector는 구시대 유물
ArrayList, LinkedList 랑 Queue, Deque 정도 많이 씀.
'인덱스' 가 생겼음 => 특정 '위치'에 넣기 가능
추가
- add(int index, E element)
- addAll(...)
조회
- get(int index)
- indexOf(Object o)
- lastIndexOf(Object o)
- listIterator()
삭제
- remove(int index)
수정
- set(int index, Element e)
기타
- subList(int fromIndex, int toIndex)
indexOf()
- 여러개가 있다면 그 중 첫번째 index
- 없으면 -1
배열의 장점
- 가장 기본적 자료구조로 간단, 사용이 쉬움.
- 접근 속도가 빠름
배열의 단점
- 크기 변경 못 해서 매번 삭제하고 다시 만들어야 함.
- 비 순차적 데이터의 추가, 삭제에 많은 시간이 걸림.
- ArrayList도 고대로 단점을 가져감.
-----
LinkedList
- 각 요소를 Node로 정의하고 Node는 다음 요소의 참조 값과 데이터로 구성됨.
ArrayList 와 LinkedList의 용도.
- 특정 클래스의 용도에 적합하게.
- 소량 데이터는 별 차이 없음
- 정적인 데이터 활용, 조회는 ArrayList
- 동적인 데이터 추가, 삭제가 많으면 LinkedList
List<String> friends = new ArrayList<>();
List<String> friends = new LinkedList<>();
자료 삭제 시 주의 사항.
- for문에 size 사용 시 실시간으로 바뀔 수 있다.
- 요소 삭제 시 마다 index 차감
- 뒤에서 부터 접근.
- forEach 문장은 Collection 크기가 불변해야 함.
- ConcurentModificationException 에러 발생.
-----
Set
특징
- 입력 순서 관리 X, 주머니에 구슬 넣듯이
equals(), hashcode() 재 정의
- 같은 객체이려면 둘 다 만족 해야함..
-----
Map
key, value 모두 Object 형태
Hashtatle => 과거의 유산
HashMap, TreeMap 등등...
Map interface 주요 메소드.
.putIfAbsent()
.getOrDefault()
for(String key : hMap.keySet()){
}
-----
정렬
- 요소를 특정 기준에 대한 내림차순 또는 오름차순으로 배치 하는 것
- 순서를 가지는 Collection들만 정렬 가능
- List
- Set
_ Map
Comparable
- public int compareTo ...
11시-14시
~ dp. 시뮬 // 취업코테
try.. suffixarray...
네카라쿠배 공무원..
-----
set
- add 메서드 void가 아닌 boolean
sortedSet, sortedMap (List는 원래 sorted)
문자열 비교 시 해시코드 비교하면 빠름
public Comparator
이너 클래스는 $가 붙는다.
아우터 클래스는 생략하거나 public만 붙일 수...
잠와...
amaterasUML => class Diagram 시각화.